我在 firestore 中有以下结构的数据:
directory---
|---randomDoc1---
| |---contacts--
| |---9212345677--
| | |---name: abc
| |
| |---8564224455
|---randomDoc2---
|---contacts--
|---9212456677--
我想查询嵌套目录->randomDoc->contacts->923436475
如果我有9212345677
一个联系号码(在联系人集合 doc1 中)并且我想查询directory collection
这个9212345677
号码,并获得这个号码存在的所有 randomDocs。
例如randomDoc1 & randomDoc3
,联系人集合包含这个号码,它应该返回我两个randomDoc1 & randomDoc3
。
以下是我正在尝试的:
admin.firestore().collection("directory4").where('id', '==', mobileNo).limit(20).get().then(function(docsSnapShot){
if (docsSnapShot.size > 0) {
//print all docsSnapShot
}else{
//contact number do not exist in any of collections
}
});
当前无法跨多个子集合运行查询。
对此的一种解决方案是对这些数据进行去规范化,要么使用完整的联系人文档,要么使用指向原始文档的引用。
创建一个users
集合并在每个用户文档中创建一个directoryDocs
集合。每次将新联系人添加到目录文档时,都会触发 Cloud Function 将文档引用复制到 users/{userId}/directoryDocs 集合。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句