簡體   English   中英

使用 NodeJS 和 Mongoose 在 EJS 中查詢數據

[英]Query data in EJS with NodeJS and Mongoose

我通過執行以下操作捕獲了數據並顯示它們:

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

有人知道為什么上面的代碼在我呈現“列表”頁面時拒絕顯示數據? 謝謝!

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM