通过 collectionGroup 按名称查询
Query via collectionGroup by name
自 2019 年 5 月 8 日起,Firebase Firestore 现在支持通过 collectionGroup('collectionName')
.
查询同名的子集合
有没有办法在这些子集合中检索相同 docId
的多个文档?
这是我正在努力完成的一个小视觉示例。
collectionA
- documentA
: collectionB
- documentC
- documentB
: collectionB
- documentC
假设我想获得这两个 documentC
文件。有办法吗?
我正在尝试使用的当前代码是这样的:
const docIdFieldPath = FieldPath.documentId()
admin.firestore().collectionGroup('collectionB').where(docIdFieldPath, '==', 'documentC').get().then(...)
但是我抛出了一个错误:
INVALID_ARGUMENT: Resource name "projects/myProject/databases/(default)/documents/documentB" lacks "/" at index 86.
关于此事的文档说在尝试通过 collectionGroup
查询之前创建一个索引,但是如果我尝试通过在线索引门户这样做,我会收到一条错误消息,指出 __name__
字段已保留。
我是不是遗漏了一些愚蠢的东西,还是这个功能还不被支持?
一些 Firestore 团队告诉我这不受支持。您不能根据文档 ID 的字符串进行过滤。移动 SDK 给你一个更好的消息,但显然 nodejs SDK 没有。
您可以做的是将文档的 ID 作为字段存储在文档本身中,然后在该字段上进行过滤。
自 2019 年 5 月 8 日起,Firebase Firestore 现在支持通过 collectionGroup('collectionName')
.
有没有办法在这些子集合中检索相同 docId
的多个文档?
这是我正在努力完成的一个小视觉示例。
collectionA
- documentA
: collectionB
- documentC
- documentB
: collectionB
- documentC
假设我想获得这两个 documentC
文件。有办法吗?
我正在尝试使用的当前代码是这样的:
const docIdFieldPath = FieldPath.documentId()
admin.firestore().collectionGroup('collectionB').where(docIdFieldPath, '==', 'documentC').get().then(...)
但是我抛出了一个错误:
INVALID_ARGUMENT: Resource name "projects/myProject/databases/(default)/documents/documentB" lacks "/" at index 86.
关于此事的文档说在尝试通过 collectionGroup
查询之前创建一个索引,但是如果我尝试通过在线索引门户这样做,我会收到一条错误消息,指出 __name__
字段已保留。
我是不是遗漏了一些愚蠢的东西,还是这个功能还不被支持?
一些 Firestore 团队告诉我这不受支持。您不能根据文档 ID 的字符串进行过滤。移动 SDK 给你一个更好的消息,但显然 nodejs SDK 没有。
您可以做的是将文档的 ID 作为字段存储在文档本身中,然后在该字段上进行过滤。