我正在尝试解决从Firebase查询中获取的数据,但是数据没有得到解决

时间:2019-05-31 03:11:14

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

我正在尝试通过节点从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);

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

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试获取multiple documents from a collection。由于变量名与它们的含义不匹配,因此您的代码示例令人困惑。

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

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