登录
首页 >  Golang >  Go问答

将文档 ID 作为字段值插入 Firestore 使用 Go 的方法

来源:stackoverflow

时间:2024-03-15 23:51:28 177浏览 收藏

在 Go 中使用 Firestore 时,如果要在集合组查询中搜索特定 ID 的文档,就需要将文档 ID 镜像到文档内的 id 字段。但是,Firestore 客户端无法在写入时自动插入新 ID。因此,需要将创建新的 DocumentReference 和实际写入数据分开进行。

问题内容

我想在集合组查询期间搜索具有特定 id 的文档。根据我的阅读,不可能直接使用文档 id 执行 cgq,因此我打算将文档 id 镜像到文档内的 id 字段中。

我尝试了 firestore.documentid (请参阅下面的代码片段),希望它充当代表文档 id 的哨兵值(在调用该方法时尚不知道)。我发现 firestore.documentid 实际上是一个值为 "__name__" 的 const,并且它成为结果文档中 id 字段的字符串值。

docRef, _, err := colRef.Add(ctx, map[string]interface{}{
        "id":       firestore.DocumentID, // this does not work
        "events":   events,
        "url":      url,
        "enabled":  true,
        "created":  firestore.ServerTimestamp,
        "modified": firestore.ServerTimestamp,
})

是否可以在原子地调用 add 方法的同时将文档内的文档 id 写入 id 字段?

如果是,那么哨兵值是多少?如果不是,我是否应该执行一个事务,首先创建文档,然后依次使用 id 字段更新文档?


解决方案


您无法告诉 Firestore 客户端在写入时插入其新 ID。

要通过单个写入操作将两者都写入数据库,您必须将新 DocumentReference(这是客户端操作)的创建与数据的实际写入分开。

所以两步:

  1. 通过调用 colRef.NewDoc() 创建新的 DocumentReference
  2. 将数据(包括 ID)写入引用 docRef.Set()

理论要掌握,实操不能落!以上关于《将文档 ID 作为字段值插入 Firestore 使用 Go 的方法》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>