2

我正在尝试获取一个集合,然后迭代它的文档。在每个文档中都有另一个集合文档的参考字段。通常,如果我查询它,那么没有问题,但迭代会产生问题

在迭代组织成员时关注我想要获得的领域

在此处输入图像描述

 const result = await firestore.collection("organization-members").get();
      result.docs.forEach((doc) => {  // or result.forEach
        const data = doc.data();
        const organization = data.organization;
     
        const orgData = await organization.get() // But this says that organization.get() is not a function
      });

但是,如果我很难查询,那么它可以正常工作

const snap = await firestore
      .doc("organization-members/BOcSNLR4bt8i0Ay4aAr7")
      .get();
    const orgSnap = await snap.data().organization.get();
    console.log(orgSnap.data());

对象也不同

上面的日志来自我对它的硬查询,而下面的日志来自我循环浏览收集文档时

在此处输入图像描述

我究竟做错了什么

4

1 回答 1

1

对于其他有类似问题的人,这个答案可能会对您有所帮助

所以首先我的代码中有一个错误,但这给了我另一个答案

错误是我忘记在 forEach 函数中添加异步

这应该是这样的

 const result = await firestore.collection("organization-members").get();
  result.docs.forEach(async (doc) => {  // or result.forEach
    const data = doc.data();
    const organization = data.organization;
 
    const orgData = await organization.get() // But this says that organization.get() is not a function
  });

但这不是正确的方法

显然 async/await 在 forEach 循环中不能正常工作我不知道这背后的原因我确实联系了 firebase 团队并且那里的代表说了同样的话所以最好的方法应该是使用for 循环

例如

for(doc of result.docs)

这将始终正常工作

于 2021-02-12T21:39:19.427 回答