我正在创建一个名为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)
答案 0 :(得分:1)
您的EJS程序不会从称为render
的函数的范围继承数据。
您必须明确地传递数据:
res.render("site.ejs", { friends });
您还需要在friends
实际存在的地方进行此操作。参见How do I return the response from an asynchronous call?。