Я использую EJS. У меня есть два вложенных цикла forEach, и я пытаюсь сравнить, имеют ли два массива одинаковые значения, и если они устанавливаются, я устанавливаю переменную с именем условие равной 0, а если условие не равно 1. Вот необходимый код.
<% events.forEach(function(event){ %>
<% var condition = 1; %>
<% userEvents.forEach(function(userEvent){ %>
<% if(String(event._id) == String(userEvent)) condition = 0; }) %>
<% if(event.pointType == "Social"){ %>
Переменная userEvents и события передаются из файла app.js, который содержит маршрут, и обе переменные работают нормально. Ошибка, которую я получаю, заключается в том, что userEvent (значение внутри функции) не определено. По какой-то причине, когда я меняю следующее:
<% if(event.pointType == "Social"){ %>
до
` <% if(true){ %>`
Вот маршрут:
//INDEX - show all events
app.get("/event",isLoggedIn,function(req, res) {
var firstName = req.user.firstName;
var lastName = req.user.lastName;
var subcommittee = req.user.subcommittee;
var userEvents = req.user.events;
Event.find({}, function(err, events){
if(err){
console.log(err);
} else {
res.render("viewEvents",{userEvents:userEvents,events:events,firstName:firstName,lastName:lastName,subcommittee:subcommittee});
}
});
});
Код выполняется, но не полностью соответствует своему предполагаемому поведению.
Вот сообщение об ошибке:
ReferenceError: /home/ubuntu/workspace/views/viewEvents.ejs:25
23| <% if(String(event._id) == String(userEvent)) condition = 0; }) %>
24|
>> 25| <% if(event.pointType == "Social"){ %>
26|
27| <div class="ui clearing red raised segment">
28| <% if(condition == 1) { %>
userEvent is not defined
at eval (eval at compile (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:549:12), <anonymous>:111:69)
at Array.forEach (native)
at eval (eval at compile (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:549:12), <anonymous>:24:15)
at returnedFn (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:580:17)
at tryHandleCache (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:223:34)
at View.exports.renderFile [as engine] (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:437:10)
at View.render (/home/ubuntu/workspace/node_modules/express/lib/view.js:135:8)
at tryRender (/home/ubuntu/workspace/node_modules/express/lib/application.js:640:10)
at EventEmitter.render (/home/ubuntu/workspace/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/home/ubuntu/workspace/node_modules/express/lib/response.js:1008:7)
at /home/ubuntu/workspace/app.js:197:15
at /home/ubuntu/workspace/node_modules/mongoose/lib/model.js:4161:16
at process.nextTick (/home/ubuntu/workspace/node_modules/mongoose/lib/services/query/completeMany.js:35:39)
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)
Я не совсем понимаю, почему ошибка указывает на строку 25, в которой даже не используется переменная userEvent.