【问题标题】:Querying sub-collections of sub-collections in firebase using React JS使用 React JS 在 firebase 中查询子集合的子集合
【发布时间】:2019-12-20 10:40:08
【问题描述】:

我有一个结构如下的数据库:

-users
|--username
  |--forms
    |--applicantInformation
    |--guardianInformation
    |--terms

其中“users”是主集合,username是“users”中的一个文档,“forms”是“username”的子集合,“applicantInformation, GuardianInformation, and terms”都是表单子集合。

如何获取申请人信息、监护人信息和条款?

我尝试过使用:

const db = firebase.firestore()

db.collectionGroup("forms")
      .collectionGroup("applicantInformation")
      .get()
      .then(snap => snap.forEach(doc => console.log(doc.data())));
 db.collectionGroup("forms")
      .get()
      .then(snap => {
        snap.forEach(doc =>
          doc
            .collection("applicantInformation")
            .get()
            .then(snap => snap.forEach(doc => console.log(doc.data())))
        );
      })
      .catch(err => console.log(err));
db.collection("users")
      .get()
      .then(snap =>
        snap.forEach(doc => doc.collection("applicantInformation"))
      );

根据文档我应该能够做到:

db.collectionGroup("applicantInformation").get()...

但这不会在控制台中返回任何值。

我搜索了这个站点和文档,发现了类似的问题,但与嵌套在子集合中的子集合无关。问题是我需要遍历每个用户并为表格提取每个表单的数据。

有人能指出正确的方向吗?

我还应该指出,这一切都是通过网络完成的,不涉及节点。谢谢!

【问题讨论】:

    标签: reactjs firebase google-cloud-firestore


    【解决方案1】:

    我在我的测试数据库中做了一个类似的结构,我用来读取嵌套值的方法是这样的:

    db.collection('users').doc('forms').collection('applicantInformation').get()
      .then((snap) => {
        snap.forEach((doc) => {
          console.log(doc.id, ' => ', doc.data());
        });
      });
    

    这是我的结构截图,希望对你有帮助!

    更新:

    如果您需要获取特定的嵌套子集合,您可以试试这个:

    db.collection('users')
      .doc(username)
      .collection('forms')
      .doc('applicantInformation')
      .get()
      .then((doc) => {
        console.log(doc.id, ' => ', doc.data());
      });
    

    【讨论】:

    • 明天一定要试试这个。感谢您的洞察力,非常感谢它。假设一切正常,我会将其标记为已接受,但看起来可以!
    • 我应该指定 users 集合中的用户按名称组织。因此,我需要循环访问一组用户,以提取每个特定的用户表单。 users --> username --> forms --> applicationInformation 所以,基本上我需要写一些类似的东西:db.collection('users').doc('firstName, lastName').collection('forms').doc('applicantInformation').get() 问题是我只需要在一个循环中访问每个用户的信息,所以它们都出现在我在 React 中创建的管理表中。
    • 我编辑了我最初的帖子以澄清一些事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多