Как исправить ошибку ссылки в EJS: друг (переменная) не определен? - PullRequest
0 голосов
/ 18 июня 2019

Я создаю сайт под названием 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 Ответ

1 голос
/ 18 июня 2019

Ваша EJS-программа не наследует данные из области действия функции, вызвавшей render.

Вы должны передать данные явно:

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

Вы также должны сделать это где-то, что friends действительно существует. См. Как мне вернуть ответ от асинхронного вызова? .

...