如何解决我的EJS参考错误:朋友(变量)未定义?

时间:2019-06-18 10:49:17

标签: javascript node.js express ejs

我正在创建一个名为makeFriend的网站。当用户添加朋友时,该朋友将被保存到数据库中。之后,我从数据库中获取数据并将其设置为friends变量。在Ejs文件中,我尝试将好友写到屏幕上,但是出现了EJS参考错误:未定义好友。

即使我在此函数中定义了“朋友”,我仍然出错。

        // Friend is the model of my mongo database
    Friend.find({}, function(err, friends){
        if(err){
            console.log(err);
        }else{
            console.log(friends, {friends: friends});
        }
    });
    res.render("site.ejs");
});

我想以列表形式显示网站中的数据:

<div class="container jumbotron text-center">
    <h1>YOUR FRIENDS WILL BE HERE</h1>
    <%friends.forEach(function(friend){%>
        <li id="friend"><%= friend.name %> - <%= friend.surname %></li>
    <%});%>
</div>

但是我得到了错误:

    15| <div class="container jumbotron text-center">
    16|     <h1>YOUR FRIENDS WILL BE HERE</h1>
 >> 17|     <%friends.forEach(function(friend){%>
    18|     <li id="friend"><%= friend.name %> - <%= friend.surname %></li> 
    19|    <%});%>
    20| </div>

friends is not defined
    at eval (eval at compile (/home/guney/simpleWebApp/node_modules/ejs/lib/ejs.js:633:12), <anonymous>:22:7)

1 个答案:

答案 0 :(得分:1)

您的EJS程序不会从称为render的函数的范围继承数据。

您必须明确地传递数据:

res.render("site.ejs", { friends });

您还需要在friends实际存在的地方进行此操作。参见How do I return the response from an asynchronous call?