【问题标题】:How to insert document id as a field value Firestore with Go如何使用 Go 将文档 ID 作为字段值 Firestore 插入
【发布时间】:2020-04-14 12:13:23
【问题描述】:

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

我尝试了firestore.DocumentID(参见下面的代码 sn-p),希望它作为代表文档 ID 的标记值(在调用该方法时还不知道)。我发现firestore.DocumentID 实际上是一个值为"__name__" 的常量,它成为结果文档中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 字段更新文档?

【问题讨论】:

    标签: go google-cloud-firestore


    【解决方案1】:

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

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

    所以两步:

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

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 1970-01-01
      • 2021-01-18
      • 2023-01-01
      • 2021-02-28
      • 2019-08-14
      • 1970-01-01
      相关资源
      最近更新 更多