Страница Nodejs не загружается при рендеринге - PullRequest
1 голос
/ 14 октября 2019

Я использую 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));
});

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Решение моей проблемы

router.get('/list', async (req, res) => {
    try {
        const list = await Kp.find({}).select('summary detailDesc -_id');
        list.forEach(function(element){});
        res.render('list', {list});
    }
    catch (err) {
        res.json({ message: 'Test is not working ' + err });
        console.log(err);
    }

});

Спасибо всем за помощь с комментариями и ответами.

0 голосов
/ 14 октября 2019

Ваш 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
 }
}); 
...