将参数传递给 nodejs ejs 模板

Passing Params to nodejs ejs template

伙计们,我正在尝试在我的 .ejs 文件中呈现 MongoDB 记录,但是,我 console.log 在我的路线结束之前的变量,我得到了期望值,但是,如果在 .ejs 文件中变得未定义

下面是代码:

router.get("/new",function(req,res){
    var selectedMake;
    console.log("Welcome to new make route!");
    Make.find({},function(err,result){
        if(err){
            console.log("an error occured while fetching the data");
        }else{
            if(req.query.id){
                Make.findById(req.query.id,function(err,foundMake){
                    console.log("found the query string");
                    selectedMake = foundMake;
                    console.log(selectedMake); // renders expected value when passing valid ID in the query string
                })
            }
            res.render("vehicles/newvehiclemake",{selectedMake: selectedMake, makes:result,modelId: req.query.id});        
        }
    })

});

这是使用变量 selectedMake 的 .ejs 摘录:

<% if (!typeof selectedMake == undefined) { %>
              <% selectedMake.models.forEach(function(model){ %>
                 <tr><td><%= model.name %></td></tr>
              <% }) %>
              <% }else { %>
              <tr><td>No Models available for the selected Make</td></tr>
              <% } %>

感谢您的意见并提前致谢。

我不确定,但你在 .ejs 文件的第一行出错了。 试试这个:

<% if (typeof selectedMake !== 'undefined') { %>

typeof 任何变量 returns 一个字符串所以你必须在你的 ejs

中检查 'undefined'
<% if (typeof selectedMake !== 'undefined') { %>