go - 如何获取 Firestore 文档的 ID?
问题描述
我在 Firestore 中迭代我的用户文档,但我看不到我当前正在阅读的文档的 ID。
package main
import (
"context"
firebase "firebase.google.com/go"
"fmt"
"google.golang.org/api/iterator"
"google.golang.org/api/option"
"log"
)
ctx := context.Background()
sa := option.WithCredentialsFile("cert.json")
app, err := firebase.NewApp(ctx, nil, sa)
client, err := app.Firestore(ctx)
iter := client.Collection("users").Documents(ctx)
for {
doc, err := iter.Next()
if err == iterator.Done {
break
}
if err != nil {
fmt.Println("Error:", err)
}
userDoc := doc.Data()
var customer_id string
fmt.Println("user object ID: ", userDoc["mobile_number"])
// ^ Works
fmt.Println("user object ID: ", doc.documentID)
// ^ This gives me this error "❯ doc.documentID undefined
// (type *"cloud.google.com/go/firestore".DocumentSnapshot
// has no field or method documentID)"
据我可以从文档中读取, DocumentSnapshot 应该具有documentID
返回快照文档 ID 的属性。
我究竟做错了什么?
解决方案
Go 文档位于godoc.org上。
在您的行中doc, err := iter.Next()
,您得到一个*DocumentSnapshot
. 它有一个名为Ref
which is a的字段*DocumentRef
。ID
根据文档,它的字段是:
// The ID of the document: the last component of the resource path.
ID string
因此,要访问代码中的 ID,您可能需要使用
doc.Ref.ID
推荐阅读
- kubernetes - 是否可以使用 StackDriver 监控 Kubernetes 集群中 pod 副本的数量?
- java - 调用 SQLException.getMessage() 时出现 RuntimeException (DB2)
- r - 如何增加控制台上打印输出的大小或将结果导出到 excel 中?
- javascript - 如何在js中正确解析jsonArray?
- reactjs - 如何使用react重构switch语句中的代码?
- r - 计算R中不同组的观测值的成对欧几里得距离?
- fluent-migrator - 从在多个服务器上运行的应用程序运行进程内迁移是否安全?
- php - 升级后端服务器后,PHP 未通过 POST/CURL 发送任何参数(前端服务器没有变化)
- python - 路径名中的编码字符
- java - 没有可用的名为 xxx 的 bean