[英]How to populate multiple collections in mongoose nodejs and 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.