启动Express服务器并致电服务端时出现错误。任何想法有关语法的错误。 startzeit是一个Date()对象。
<tbody>
<% for (let seminar in seminare){ %>
<tr>
<td><%= seminar.titel %></td>
<td><%= seminar.startzeit.getDate() %>.<%= seminar.startzeit.getMonth()+1 %>.
<%= seminar.startzeit.getFullYear() %></td>
<td><%= seminar.ort %></td>
</tr>
<% }; %>
</tbody>
这就是我如何称呼模板:
res.render('Seminare', {seminare: model.seminare});
我从具有对象数组的模型中获取数据,这些对象具有此属性。
我收到的错误消息是:
TypeError: /Users/Jannik/Documents/Atom/Web-Praktika/praktikum12/seminarApp-v2/views/Seminare.ejs:51
49| <tr>
50| <td><%= seminar.titel %></td>
>> 51| <td><%= seminar.startzeit.getDate() %>.<%= seminar.startzeit.getMonth()+1 %>.
52| <%= seminar.startzeit.getFullYear() %></td>
53| <td><%= seminar.ort %></td>
54| </tr>
Cannot read property 'getDate' of undefined
at eval (eval at compile (/Users/Jannik/Documents/Atom/Web-Praktika/node_modules/ejs/lib/ejs.js:633:12), <anonymous>:23:44)
at returnedFn (/Users/Jannik/Documents/Atom/Web-Praktika/node_modules/ejs/lib/ejs.js:668:17)
at tryHandleCache (/Users/Jannik/Documents/Atom/Web-Praktika/node_modules/ejs/lib/ejs.js:254:36)
at View.exports.renderFile [as engine] (/Users/Jannik/Documents/Atom/Web-Praktika/node_modules/ejs/lib/ejs.js:485:10)
at View.render (/Users/Jannik/Documents/Atom/Web-Praktika/node_modules/express/lib/view.js:135:8)
at tryRender (/Users/Jannik/Documents/Atom/Web-Praktika/node_modules/express/lib/application.js:640:10)
at Function.render (/Users/Jannik/Documents/Atom/Web-Praktika/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/Users/Jannik/Documents/Atom/Web-Praktika/node_modules/express/lib/response.js:1012:7)
at /Users/Jannik/Documents/Atom/Web-Praktika/praktikum12/seminarApp-v2/routes/seminare.js:7:7
at Layer.handle [as handle_request] (/Users/Jannik/Documents/Atom/Web-Praktika/node_modules/express/lib/router/layer.js:95:5)
当我在渲染之前添加console.log时,我得到:
Seminar {
titel: 'Unternehmensgründung',
name: 'Unternehmensgründung',
ort: 'dortmund',
startzeit: 2019-01-20T11:00:00.000Z,
endzeit: 2019-02-20T13:00:00.000Z,
freiePlaetze: 10,
gesamtePlaetze: 22,
tutoren: [ 'amk1' ],
getBplaetze: [Function]
},
Seminar {
titel: 'Unternehmensgründung',
name: 'Unternehmensgründung',
ort: 'dortmund',
startzeit: 2019-02-20T11:00:00.000Z,
endzeit: 2019-03-20T14:00:00.000Z,
freiePlaetze: 5,
gesamtePlaetze: 20,
tutoren: [ 'bruh' ],
getBplaetze: [Function]
}
答案 0 :(得分:1)
也许model.seminare
中的某些条目没有startzeit
属性。尝试添加一个if块来检查seminar
是否具有startzeit
属性。
<%if (seminar.startzeit != undefined) { %>
<td><%= seminar.startzeit.getDate() %>.<%= seminar.startzeit.getMonth()+1 %>.
<%= seminar.startzeit.getFullYear() %></td>
<% } %>
答案 1 :(得分:1)
问题发生在for
循环中。
请查看以下区别:
用于...中
for (let index in array) {
let item = array[index];
console.log(item);
}
用于...的
for (let item of array) {
console.log(item);
}
您需要的是for ... of
循环。