【问题标题】:How to export/read data from async function that's querying firebase如何从查询 firebase 的异步函数中导出/读取数据
【发布时间】:2022-07-05 21:49:31
【问题描述】:

通过创建项目来学习如何使用 React。

我正在尝试通过将数据添加到集合中来过滤数据。然后我尝试在一定时间内添加所有 totalCalories,以便我可以使用 react 以形式显示它。

但是,我不知道如何获取 totalCalories 的值以及获取诸如进餐时间之类的其他字段。我想在我的 app.js 中显示所有这些,但是当我这样做时,我得到了未定义,或者说承诺待定。

任何帮助将不胜感激。 谢谢

firebase.js

    export async function run() {
      const time = 48;
      const timediff = moment(new Date()).subtract(time, "hours")._d;
      await db
        .collection("/food/meals")
        .where("mealTime", ">=", timediff)
        .get()
        .then((qSnapshot) => {
          let totalCalories = 0;
          qSnapshot.forEach(function (doc) {
            totalCalories += doc.data().calories;
            console.log(doc.id, " -> ", doc.data());
          });
          console.log(totalCalories);
          return totalCalories;
        })
        .catch(function (error) {
          console.log("Error getting documents: ", error);
        });
    }
    
    run(); //returns nothing 
    console.log(run()); //Promise {<pending>}
    
    console.log(run().totalCalories); //undefined

【问题讨论】:

    标签: javascript node.js reactjs firebase promise


    【解决方案1】:

    试试这个:

    而不是:

    await db...
    

    =>

    return db...
    

    run 不再需要是异步函数

    run().then(totalCalories => console.log('totalCalories :', totalCalories));
    

    现在运行返回一个promise,当这个promise被解决时,它返回你的数据库查询返回的totalCalories

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-16
      • 2021-12-14
      • 2020-06-01
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      相关资源
      最近更新 更多