假设Firebase数据存储库Db是...
Collection("Collection1").
Document("documentX").
Collection("CollectionA").
field("FieldB")
在Golang中,使用firebase admin SDK ...在GoLang中获取FieldB价值的代码是什么? 这就是我尝试过的...
// dsnapp, err := client.Collection("Collection1/documentX").Get(ctx)
// dsnapp, err := client.Collection("Collection1").Document("documentX").Collection["CollectionA"].Get(ctx)
dsnapp2, err := client.Collection("Collection1").Doc("documentX").Get(ctx)
m = dsnapp2.Data()
fmt.Printf("222 Document data: %#v\n", m["CollectionA"]["FieldB")
以及其他各种技术...有什么建议吗?
答案 0 :(得分:0)
首先,像@Doug Stevenson所说,馆藏仅包含文档。所以知道我们可以使用此结构作为请求的基础。
Collection (CollectionA) -> Document (documentX) -> Collection (CollectionB) -> Document (documentY) -> Field (FieldB)
您应该考虑阅读firebase admin sdk的go文档中的内容。 https://godoc.org/cloud.google.com/go/firestore
您可以看到我们可以根据需要链接请求。因此您的查询将如下所示:
dsnapp2, err := client.Collection("Collection1").Doc("documentX").Collection("Collection1").Document("documentY").Get(ctx)
m := dsnapp2.Data() // it is important to use the := operator if you havn't initialized the variable yet
fmt.Printf("222 Document data: %#v\n", m["FieldB")
但是,如果您需要多个字段,则应考虑将结果(如第一个文档(documentX))解组到结构。从那里,您还可以获取所需的字段。