首页 > 解决方案 > 如何修复我的 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)

标签: javascriptnode.jsexpressejs

解决方案


您的 EJS 程序不会从调用render.

您必须明确传递数据:

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

您还需要在friends实际存在的地方执行此操作。请参阅如何从异步调用返回响应?.


推荐阅读