簡體   English   中英

使用 mongodb 和 nodejs 將多個 collections 發送到一個 ejs 文件

[英]Send multiple collections to one ejs file using mongodb and nodejs

app.get('/index', function(req, res){            
    Activities.find({}, function(err, activity){
      if(err){
          console.log(err);
      }else{
          res.render('index', {activities:activity});
      }
    });
    Upcoming.find({}, function(err, upcomingActivity){
      if(err){
          console.log(err);
      }else{
          res.render('index', {upcoming:upcomingActivity});
      }
    });
});

我只想獲取多個 collections 的數據,然后將其傳遞給 index.ejs 文件,以便我可以在那里使用這些數據。 我知道多次使用 res.render() 是行不通的,但我已經嘗試了很多事情,比如將建立的數據保存到變量中,創建一個 object 等等。但沒有任何效果。

在您的 get 響應中,您應該只渲染一次索引頁面將參數一起傳遞。

    app.get('/index', function(req, res){            
        Activities.find({}, function(err, activity){
          if(err){
              console.log(err);
          }else{
                  Upcoming.find({}, function(err, upcomingActivity){
          if(err){
              console.log(err);
          }else{
              res.render('index', {activity:activity, upcoming:upcomingActivity,});
          }
        });
          }
        });
    });

它將以這種方式工作,因為您只有幾個集合,但其他方法是將其作為全局對象傳遞,然后渲染它。

使用then異步渲染

app.get('/index', (req,res) => {
    Activities.find().then(activity => {
            Upcoming.find().then(upcomingActivity => {
                res.render('index', {Activities: activity, Upcoming: upcomingActivity})
            }).catch(err => console.log(err))
}).catch(err => console.log(err))
})

暫無
暫無

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

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