渲染时未加载Nodejs页面

问题描述 投票:1回答:1

我正在使用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));
});
javascript node.js mongodb express ejs
1个回答
0
投票

您的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
 }
}); 
© www.soinside.com 2019 - 2024. All rights reserved.