Golang Firebase管理员SDK

时间:2018-10-09 21:17:59

标签: firebase go google-cloud-firestore google-admin-sdk

假设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")

以及其他各种技术...有什么建议吗?

1 个答案:

答案 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))解组到结构。从那里,您还可以获取所需的字段。