【问题标题】:How to firestore query on nested doc. Firebase Nodejs如何在嵌套文档上触发查询。 Firebase 节点
【发布时间】:2018-03-19 11:21:46
【问题描述】:

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

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

我想查询嵌套的directory->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
    }
});

【问题讨论】:

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


    【解决方案1】:

    目前无法跨多个子集合运行查询。

    去规范化

    对此的一种解决方案是对这些数据进行反规范化,使用完整的联系人文档或使用指向原始文档的引用。

    向用户集合添加目录引用

    创建一个users 集合,并在每个用户文档中拥有一个directoryDocs 集合。每次将新联系人添加到目录文档时,都会触发 Cloud Function 将文档引用复制到 users/{userId}/directoryDocs 集合。

    【讨论】:

    • 相当令人失望。因为我必须对所有数据进行反规范化。无论如何感谢您的解释性回答。
    猜你喜欢
    • 1970-01-01
    • 2021-11-25
    • 2020-03-16
    • 1970-01-01
    • 2021-09-05
    • 2018-03-09
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    相关资源
    最近更新 更多