【问题标题】:Passing Params to nodejs ejs template将参数传递给 nodejs ejs 模板
【发布时间】:2016-12-13 13:47:36
【问题描述】:

伙计们,我正在尝试在我的 .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>
              <% } %>

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

【问题讨论】:

    标签: javascript node.js mongodb mongoose ejs


    【解决方案1】:

    typeof 在任何变量上都会返回一个字符串,因此您必须在您的 ejs 中检查 'undefined'

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

    【讨论】:

    • 你不应该在你的答案中喊出其他用户。如果您想批评其他用户,您应该在他们的帖子下方添加评论。
    【解决方案2】:

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

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

    【讨论】:

    • 如果selectedMake未定义,代码会在第二种方法中崩溃。
    猜你喜欢
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2019-05-27
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多