我正在使用Nodejs和Mongoose。当我渲染页面时,什么也没有发生,页面只是尝试加载。当我写到控制台时,我可以查看集合(Kp)中的所有条目。关于我的代码有什么问题,请提供帮助。
router.get('/list', (req, res) => {
const arrayT = [];
Kp.find({})
.then(element => {
arrayT.forEach(function (element) {
arrayT.push({
summary: element.summary,
detailDesc: element.detailDesc
});
res.render('list', { arrayT });
})
})
.catch(err => console.log(err));
});
最佳答案
您的arrayT.forEach不会遍历任何内容,因为arrayT为空,并且因为它不会遍历任何内容,因此res.render()代码行从未被使用过。您可以用console.log();证明这一点。
我对您的建议是利用异步等待并避免应允,因为它们可能会导致嵌套代码(如回调)。
首选代码:
router.get('/list', async (req, res) => {
try {
const arrayT = [];
const listOfKPs = await Kp.find({})
listOfKPs.forEach( ele => {
arrayT.push({
summary: element.summary,
detailDesc: element.detailDesc
});
});
return res.render('list', { arrayT });
}
catch(err) {
console.log(err);
return res.render('list', { [] }); // render empty list
}
});