我是firebase的新手,并且已经使用了node.js。基本上,我想要的是从集合“咖啡”中检索数据,并通过我的/ test路由发送数据,以便我可以在前端使用它。我不知道如何退还。
通过将返回值放入forEach循环中,我得到了它来返回第一个索引,但不返回列表的其余部分。但是我想列出整个列表。
//test route for database
router.get("/test", (req, res) =>{
// For loop goes thorugh our collection list and displays them in log.
db.collection('coffee').get().then((snapshot) => {
let getCoffee = snapshot.forEach((doc) => {
//console.log(doc.data());
const dataArray = [];
dataArray.push(doc.data());
console.log(dataArray);
});
return res.json(getCoffee);
})
.catch((err) => {
console.log('Error getting documents', err);
});
});
编辑后:
router.get("/test", (req, res) =>{
// For loop goes thorugh our collection list and displays them in log.
db.collection('coffee').get().then((snapshot) => {
let getCoffee = snapshot.map((doc) => {
return doc.data();
});
return res.json(getCoffee);
})
.catch((err) => {
console.log('Error getting documents', err);
});
});
let getCoffee = snapshot.map((doc) => {
return doc.data();
});
return res.json(getCoffee);
您的快照在'then'和'catch'块内按承诺运行。问题是您的外部get方法在内部promise完成之前就已经完成了。确保您返回承诺的结果,而不是仅仅兑现承诺。