【发布时间】:2018-05-13 19:10:57
【问题描述】:
我正在使用 EJS。我有两个嵌套的 forEach 循环,我试图比较两个数组是否具有相似的值,如果它们有,我将一个名为 condition 的变量设置为 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 和 events 是从包含路由的 app.js 文件传入的,这两个变量都可以正常工作。我得到的错误是未定义 userEvent(value inside the function)。出于某种原因,当我更改以下内容时:
<% 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。
【问题讨论】:
-
尝试在渲染对象上添加引号:res.render("viewEvents",{"userEvents":userEvents,"events":events,"firstName":firstName,"lastName":lastName, "分委员会":分委员会});
-
就像我传入的变量一样?
-
还是有同样的问题。变量确实出现在 ejs 文件中,这不是真正的问题。 forEach 中的参数的问题
-
所以这个 userEvents.forEach(userEvents){}?
-
userEvents 数组的内容是什么?
标签: javascript node.js ejs