Home > Mobile >  Get a single item from the query Firestore
Get a single item from the query Firestore

Time:09-25

I'm trying to get a single document from the Firestore Firebase using Golang. I know that it is easy if you have an id, you can write something like this:

database.Collection("profiles").Doc(userId).Get(ctx)

In my case I need to find a specific document using a Where condition, and this is where I get stuck. So far I was able to come up only with the following:

database.Collection("users").Where("name", "==", "Mark").Limit(1).Documents(ctx).GetAll()

And it is obviously not the best solution since I am looking only for one (basically the first) document which follows the condition and using GetAll() seems really weird. What would be the best approach?

CodePudding user response:

The application can call Next and Stop to get a single document:

func getOne(ctx context.Context, q firestore.Query) (*firestore.DocumentSnapshot, error) {
    it := q.Limit(1).Documents(ctx)
    defer it.Stop()
    snap, err := it.Next()
    if err == iterator.Done {
        err = fmt.Errorf("no matching documents")
    }
    return snap, err
}
  • Related