【问题标题】:I am trying to resolve the data fetched from a firebase query but the data is not getting resolved我正在尝试解析从 firebase 查询中获取的数据,但数据未得到解析
【发布时间】:2019-10-16 16:43:17
【问题描述】:

我正在尝试通过节点从 firebase 获取数据,但数据没有被解析。我无法得到我想要的数据。基本上我想要来自 firebase 数据的时间戳,但无法得到它。

我已经尝试使用 promise 和 foreach 函数来解决它,但效果不佳。

router.post("/date", (req, res) => {
  const date = {
    sdate: req.body.sdate,
    edate: req.body.edate
  };
  let s = new Date(date.sdate).getTime();
  let e = new Date(date.edate).getTime();
  const coll = db
    .collection("calls")
    .where("time", ">=", `${s}`)
    .where("time", "<=", `${e}`)
    .get()
    .then(doc => {
      doc.forEach(data => {
        console.log(data.id, data.data());
      });
    })
    .catch(err => {
      console.log(err);
    });
  console.log(coll);

我希望将数据解析为简单的对象或数组,以便将其呈现给模板引擎以显示数据。

【问题讨论】:

  • 我正在获取数据但无法将其解析到模板引擎,因为我无法以简单格式解析数据。任何帮助将不胜感激
  • 哪一行给出了您不期望的输出?
  • 调用集合的架构是什么?
  • 记录 data.data() 的行

标签: javascript node.js express firebase-realtime-database promise


【解决方案1】:

您似乎正在尝试获取multiple documents from a collection。由于变量名称与其含义不符,您的代码示例令人困惑。

在您的问题中还不清楚您的代码示例的哪一部分未能产生预期的结果,但我怀疑它是console.log(coll)。这是因为您在 .then() 中是 returning nothing,并且您没有等待承诺在登录之前得到解决。

router.post("/date", (req, res) => {
  const date = {
    sdate: req.body.sdate,
    edate: req.body.edate
  };
  let s = new Date(date.sdate).getTime();
  let e = new Date(date.edate).getTime();
  const coll = []
  db
    .collection("calls")
    .where("time", ">=", `${s}`)
    .where("time", "<=", `${e}`)
    .get()
    .then(querySnapshot => {
      querySnapshot.forEach(doc => {
        coll.push({id: doc.id, data: doc.data()});
      });
      console.log(coll);
    })
    .catch(err => {
      console.log(err);
    });
})

【讨论】:

  • 如果您满意,我可以建议您接受答案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 2016-02-20
  • 2012-02-23
  • 1970-01-01
  • 1970-01-01
  • 2019-10-24
  • 2019-04-05
相关资源
最近更新 更多