Запрос данных в E JS с NodeJS и Mongoose - PullRequest
0 голосов
/ 31 января 2020

Я собрал данные и отобразил их, выполнив следующее:

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 });
})

Кто-нибудь знает, почему приведенный выше код отказывается отображать данные при отображении страницы со списком? Спасибо!

1 Ответ

0 голосов
/ 31 января 2020

mon goose find метод является асинхронным, res.render может / будет выполняться до заполнения массива. Ваш код должен быть таким, как показано ниже

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