在等待包含承诺要解决的功能之前似乎返回响应"/>
Nodejs在等待包含承诺要解决的功能之前似乎返回响应
我正在尝试点击我的API端点“类别”,以从firebase的类别集合中返回文档列表。使用以下代码:
function getCategories() {
let arr = [];
categories
.get()
.then(snapshot => {
snapshot.forEach(doc => {
console.log(doc.data().category);
arr.push(doc.data().category);
return arr;
});
})
.catch(err => {
console.log(err);
return [1, 2, 3];
});
}
router.route("/categories").get(async function(req, res, next) {
let arr = await getCategories();
res.json(arr);
});
虽然我没有收到任何错误,但我收到一个空响应,该响应在调试时显示为arr
未定义。问题是使用调试器时,会调用forEach
内的控制台日志,并且我在控制台中看到了我的类别,但是由于某些原因,它不等待Firebase Promise解析,并且路由器只响应未定义的[ C0]变量。
您没有兑现诺言。在arr
呼叫之前添加return
。
更多推荐
Nodejs在等待包含承诺要解决的功能之前似乎返回响应
发布评论