我正在尝试通过节点从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);
我希望将数据解析为简单的对象或数组,以便可以将其呈现给模板引擎以显示数据。
答案 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);
});
})