我正在使用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
 }
});

10-06 15:14