Я получаю сообщение об ошибке при запуске своего экспресс-сервера и вызове стороны. Любые идеи, что не так с синтаксисом. 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.info перед рендерингом, я получаю:
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]
}
Я ничего не сделал, чтобы проверить, должно ли это происходить через module.exports моего класса модели?
Просто добавьте console.info(model.seminare) перед res.render(...).
Я сделал, и я добавил это выше



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Возможно, некоторые записи в model.seminare не имеют свойства startzeit. Попробуйте добавить блок if, чтобы проверить, имеет ли seminar свойство startzeit.
<%if (seminar.startzeit != undefined) { %>
<td><%= seminar.startzeit.getDate() %>.<%= seminar.startzeit.getMonth()+1 %>.
<%= seminar.startzeit.getFullYear() %></td>
<% } %>
Проблема возникает в петле for.
Пожалуйста, обратите внимание на разницу ниже:
для ... в
for (let index in array) {
let item = array[index];
console.info(item);
}
для ... из
for (let item of array) {
console.info(item);
}
Что вам нужно, так это петля for ... of.
Что вы сделали, чтобы убедиться, что
startzeit— этоDate, как вы утверждаете? Потому что очевидно, что на данный момент это на самом делеundefined.