【问题标题】:Get Data from Firestore async从 Firestore 异步获取数据
【发布时间】:2020-11-25 10:20:04
【问题描述】:

我正在尝试从我的 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);

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    我相信这会有所帮助:

      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);
    

    【讨论】:

    • 哇,谢谢!我不知道这个 for 循环能很好地工作。处理一个中等规模的数据集需要相当长的时间,但它确实有效!谢谢!
    猜你喜欢
    • 2019-08-09
    • 2020-06-01
    • 2020-03-21
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 2019-04-25
    相关资源
    最近更新 更多