gpt4 book ai didi

go - 如何在查询中使用Firestore DocumentID __name__

转载 作者:行者123 更新时间:2023-12-01 21:09:33 24 4
gpt4 key购买 nike

我计划使用“输入中”查询选择器根据ID列表返回多个文档。但是,在此示例中,我简化了使用“==”:

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(“__名称__”)选择器?

最佳答案

好,我已经解决了。将最终查询更改为:

Where(firestore.DocumentID, "==", ref)
...例如在模拟器和正式版Firestore中都可以传递整个 *firestore.DocumentRef而不是 string
在两个环境中,传递字符串均不会返回任何结果,但是在使用仿真器时,它会静默失败,并且不会返回错误。

关于go - 如何在查询中使用Firestore DocumentID __name__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63214521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com