EJS变量显示为null

时间:2016-11-27 17:15:38

标签: node.js express ejs

我有一个node / express / ejs应用程序,当我转到页面时,它显示变量的值为null。这是路线。

router.get("/events",  isLoggedIn, function(req,res){
    User.findById(req.params.id).populate("moments").populate("events").exec(function(err,allEvents){
        if(err){
            console.log(err);
            console.log("Ummm.... the database may be down?.......")
        } else {
            if (allEvents === null){
                res.redirect("/dashboard");
            } else {
            console.log("Below are all the events pulled");
            console.log(allEvents)
            res.render("eventsList", {events: allEvents});
            }
        }
    });
});

所以事件是我传递给“eventsList”的变量。渲染上方的console.log显示事件,当我创建新事件时,它会附加到该列表。但是,每次进入/ dashboard页面时都好像allEvents中有null。

以下是客户端的代码:

 <% events.forEach(function(events){ %>

我认为它与if语句有关,但我无法弄明白。

1 个答案:

答案 0 :(得分:1)

也许您还没有在路线中指定userId参数

router.get("/events/:userId",  isLoggedIn, function(req,res){
console.log("userId: ", req.params.userId)   
User.findById(req.params.userId).populate("moments").populate("events").exec(function(err,allEvents){
    if(err){
        console.log(err);
        console.log("Ummm.... the database may be down?.......")
    } else {
        if (allEvents === null){
            res.redirect("/dashboard");
        } else {
        console.log("Below are all the events pulled");
        console.log(allEvents)
        res.render("eventsList", {events: allEvents});
        }
    }
})
});