Я планирую использовать селектор запросов «in» для возврата нескольких документов на основе списка идентификаторов. Однако я упростил использование "==" для этого примера:
collection := server.Firestore.Collection("foo")
// Add a document:
ref, _, err := collection.Add(ctx, map[string]string{"a": "b"})
if err != nil {
panic(err)
}
// Here's the document ID:
fmt.Println("ref.ID", ref.ID)
// Get all the documents in the collection just to check it's there:
allDocs, err := collection.Query.Documents(ctx).GetAll()
if err != nil {
panic(err)
}
fmt.Println("len(allDocs):", len(allDocs))
// Check our document is the one in the collection:
fmt.Println("allDocs[0].Ref.ID", allDocs[0].Ref.ID)
// Get the document using __name__ query:
docQuery, err := collection.Query.Where(firestore.DocumentID, "==", ref.ID).Documents(ctx).GetAll()
if err != nil {
panic(err)
}
fmt.Println("len(docQuery):", len(docQuery))
Вывод:
ref.ID NF3CCjDikC9iHPubGA8o
len(allDocs): 1
allDocs[0].Ref.ID NF3CCjDikC9iHPubGA8o
len(docQuery): 0
Насколько я могу судить, приведенный выше код должен возвращать один документ в запрос. Я неправильно использую селектор DocumentID ("__ name __")?