Node.JS、Express 和 MongoDB Atlas::多个集合 ejs

标签 node.js mongodb express mongoose

我已经尝试了几乎所有的解决方案,但无法解决这个问题。

我正在尝试将多个数据集合(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/

相关文章:

node.js - 如何返回从 MongoDb 中的一个数组过滤出来的多个数组

javascript - 从带有 ids 数组的 url 中删除括号 (Request.js)

javascript - 如何使用 Express 在 Node.js 中成功发送 JSON 响应并重定向到某个 html 页面?

向数据库插入行时 MySQL 语法错误

node.js - 使用nodejs将文件夹内容复制到另一个文件夹

node.js - 如何使用 Mongodb 将具有相同名称但特定属性具有不同值的文档分组到一个数组中?

node.js - 连接到 mongoose 的语法

javascript - Nodejs mongodb 动态集合名称

javascript - 引用错误 : WebSocket is not defined

node.js - 使用 mongoose 和 express 处理数据验证的最佳场所