首页 > 解决方案 > 从 Firestore 异步获取数据

问题描述

我正在尝试从我的 Firestore 数据库中获取数据,但我无法正确执行此操作。

我的问题是console.log(allData.length)总是打印0,因为我猜它超过了代码的异步部分,但我无法弄清楚以某种方式使“userDataSnapshot.docs.map”异步。关于如何正确执行此操作的任何提示?

      const allData = [];
      const userDataSnapshot = await db.collection("userdata").get();
      userDataSnapshot.docs.map(async (doc) => {
        var userObject = [];
        userObject.push(doc.id);
        var snapshot = await doc.ref.collection("advanceddata").get();
        snapshot.docs.map((doc) => {
          userObject.push(doc.data());
        });
        allData.push(userObject);
      });
      console.log(allData.length);

标签: javascriptfirebasegoogle-cloud-firestore

解决方案


我相信这会有所帮助:

  const allData = [];
  const userDataSnapshot = await db.collection("userdata").get();
  for(const doc of userDataSnapshot.docs) {
   var userObject = [];
    userObject.push(doc.id);
    var snapshot = await doc.ref.collection("advanceddata").get();
    snapshot.docs.map((doc) => {
      userObject.push(doc.data());
    });
    allData.push(userObject);
  }
  console.log(allData.length);

推荐阅读