首页 > 解决方案 > 使用 golang 查询中的 ID 从 Firestore GCP 获取文档

问题描述

我正在尝试从我的 GCP Firestore 集合中获取一组文档,其中查询文档 ID 在字符串数组中。我看到它可以与其他语言一起使用,但我找不到 Golang 的解决方案。

我正在尝试以下操作:

Collection("myCollection").Where(firestore.DocumentID, "in", []string{"id1", "id2", "id3"}).Documents(ctx)

但我有以下错误:

{
    "code": 3,
    "message": "__key__ filter value must be a Key"
}

我认为将文档 id 保存为文档本身的字段不是最佳做法,但它会降低查询的复杂性,这将是一种解决方法。你怎么看 ?有什么建议吗?

标签: gogoogle-cloud-firestore

解决方案


使用Client.GetAll通过 id 获取多个文档。

var drs []*firestore.DocRef
for _, id := range []string{"id1", "id2", "id3"} {
    drs = append(drs, cr.Doc(id))
}
snaps, err := client.GetAll(ctx, drs)

推荐阅读