【发布时间】:2020-05-16 19:09:21
【问题描述】:
我已经捕获数据并通过这样做来显示它们:
const items = [];
Task.find({},(err,tasks)=>{
if(err){
console.log(err);
}else{
tasks.forEach((task)=>{
items.push(task.name);
})
}
})
app.get("/", (req, res) => {
today = date.getDate();
res.render('list', { kindOfDay: today, items: items });
})
但是当我尝试这样做时,它无法显示数据而没有任何错误:
app.get("/", (req, res) => {
const items = [];
Task.find({}, (err, tasks) => {
if (err) {
console.log(err);
} else {
tasks.forEach((task) => {
items.push(task.name);
//console.log(task.name) still works
})
}
});
today = date.getDate();
res.render('list', { kindOfDay: today, items: items });
})
有人知道为什么上面的代码在我呈现“列表”页面时拒绝显示数据吗? 谢谢!
【问题讨论】:
-
res.render在items数组被填充之前执行,因为nodejs是异步的,所以将task.find包裹在async await函数中,以便res.render在处理完成后调用
-
或者你可以尝试将渲染代码放在Task.find函数的范围内
-
在从 db 获取数据时使用 async await 就可以了