Javascript 如何在嵌套文档上存储查询。火基节点
我在firestore中有以下结构的数据:Javascript 如何在嵌套文档上存储查询。火基节点,javascript,node.js,firebase,google-cloud-firestore,Javascript,Node.js,Firebase,Google Cloud Firestore,我在firestore中有以下结构的数据: directory--- |---randomDoc1--- | |---contacts-- | |---9212345677-- | | |---name: abc
directory---
|---randomDoc1---
| |---contacts--
| |---9212345677--
| | |---name: abc
| |
| |---8564224455
|---randomDoc2---
|---contacts--
|---9212456677--
我想查询嵌套的目录->随机文档->联系人->923436475
如果我有9212345677
一个联系人号码(在联系人集合doc1中),并且我想在目录集合中查询此9212345677
号码,并获取存在此号码的所有随机文档
例如,randodoc1和randodoc3
的联系人集合包含此号码,它应该同时返回我randodoc1和randodoc3
以下是我正在尝试的:
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
集合。每次向目录文档中添加新联系人时,都会触发一个云函数将文档引用复制到users/{userId}/directoryDocs集合。非常令人失望。因为我必须对所有数据进行非标准化。不管怎样,谢谢你的解释性回答。