我已经尝试了几乎所有的解决方案,但无法解决这个问题。
我正在尝试将多个数据集合(Mongodb Atlas)获取到一个 ejs 文件中。但我无法将数据获取到渲染的 ejs 表上。但是当我使用轨迹进行测试时,我可以看到从数据库接收到的所有数据,直到 res.render("/vendor/show")。但它没有传递到 ejs 模板。
我在 mongo Atlas 上有三组数据:
const vendorSchema = new mongoose.Schema({
name:String,
image:String,
imageId:String,
});
const newpromoSchema = new mongoose.Schema({
name:String,
image:String,
imageId:String,
vendor:String,
description:String,
sdate:String,
edate:String,
});
const neweventSchema = new mongoose.Schema({
name:String,
image:String,
imageId:String,
description:String,
vendor:String,
sdate:String,
edate:String,
});
router.get("/vendors/:id",function(req,res) {
var events={}; //Create Empty event Object
var promotions={}; //Create Empty promotion Object
var vendors={};//Create Empty vendor Objext
Promotion.find({},function (err,allPromotions) {
if (err) {
console.log(err);
} else {
//Find Collection And Assign It To Object
promotions=allPromotions;
}
});
Event.find({},function(err, allEvents) {
if (err) {
console.log(err);
} else {
events=allEvents;
}
});
Vendor.find({},function(err,allVendors){
if(err){
console.log(err);
}else{
vendors=allVendors;
//find order collection and passing it to ejs templates
res.render("vendors/show",{ event:events, promotion:promotions vendor:vendors});
}
});
});
Show.ejs code as
<%=vendor.name%>
<%=promotion.name%>
<%=event.name%>
最佳答案
您需要处理异步进程。在您当前的代码中,有三个异步进程。请点击链接,您一定会有所了解。
https://blog.risingstack.com/mastering-async-await-in-nodejs/
如果您需要更多帮助,请随时发表评论。
关于Node.JS、Express 和 MongoDB Atlas::多个集合 ejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57055091/