繁体   English   中英

如何使用 Go 将文档 ID 作为字段值 Firestore 插入

[英]How to insert document id as a field value Firestore with Go

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

我尝试了firestore.DocumentID (请参阅下面的代码片段),希望它作为表示文档 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字段更新文档的事务?

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

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

所以两步:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM