javascript - 如何对嵌套文档进行火存储查询。 Firebase Nodejs

标签 javascript node.js firebase google-cloud-firestore

我在 firestore 中有以下结构的数据:

directory---
           |---randomDoc1---
           |                 |---contacts--
           |                               |---9212345677--
           |                               |              |---name: abc
           |                               |
           |                               |---8564224455
           |---randomDoc2---
                              |---contacts--
                                           |---9212456677--

我想查询嵌套的directory->randomDoc->contacts->923436475

如果我有 9212345677 联系电话号码(在联系人集合 doc1 中),并且我想在目录集合 中查询此 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 集合。

关于javascript - 如何对嵌套文档进行火存储查询。 Firebase Nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49361746/

相关文章:

java - firebase.auth.PhoneAuthProvider 缺失

javascript - Drupal:Ajax 发布出现内部服务器错误

javascript - 如何动态更改 React Bootstrap 模态的内容?

node.js - 在 nodejs 中创建 RSA token

node.js - 面向 Android 12 及更高版本的应用需要为 `android:exported` [Cordova] 指定显式值

node.js - 如何为 express-stormpath 中的组创建不同的注册页面

android - 带系统 : Ignoring header X-Firebase-Locale because its value was null

ios - Unity Firebase Analytics 6.15.2 崩溃

javascript - 将多个实体从不同的文件添加到 JavaScript 命名空间

javascript - 在 JavaScript 中执行继承