使用React JS在Firebase中查询子集合的子集合

时间:2019-08-13 20:45:20

标签: reactjs firebase google-cloud-firestore

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

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

其中“用户”是主要集合,用户名是“用户”中的文档,“表单”是“用户名”的子集合,而“ applicantInformation,guardianInformation和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()...

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

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

有人可以指出我正确的方向吗?

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

1 个答案:

答案 0 :(得分:1)

我在测试数据库中建立了类似的结构,我用来读取嵌套值的方法是:

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

这是我的结构的屏幕截图,希望对您有所帮助!

Here is a screenshot of my structure