#express #mongoose #ejs
#экспресс #mongoose #ejs
Вопрос:
Я пытаюсь загрузить и отобразить несколько рабочих записей из моей базы данных MongoDB с помощью mongoose и Express, и у меня возникают проблемы.
Когда я пытаюсь передать результаты в свой файл .ejs, я получаю сообщение об ошибке, что переменная не определена.
По какой-то причине это работает, когда я передаю отдельные объекты в файл .ejs.
Вот что работает, но бесполезно
router.get('loadEntries', (req,res) => {
Entry.find({}, function(err, data) {
data.forEach(function(item) {
res.render('loadEntries',{firstName:item.firstName});
}
});
});
//ejs file. Very basic, just to capture the data
<p>
<%=firstName%>
</p>
Вот что я хотел бы сделать, но не работает
router.get('loadEntries', (req,res) => {
Entry.find({}, function(err, data) {
res.render('loadEntries',{result:data});
});
});
//ejs file
<p>
<%result.forEach(function(item) { %>
First name: <%=item.firstName%>
Last name: <%=item.lastName%>
<%})%>
</p>
Моя модель mongoose
const mongoose = require('mongoose');
const EntrySchema = new mongoose.Schema({
//hours, room, buliding, note
hours: {
type: Number,
required: true
},
room: {
type: String,
required: true
},
building: {
type: String,
required: true
},
note: {
type: String,
required: false
},
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
}
});
const Entry = mongoose.model('Entry', EntrySchema);
module.exports = Entry;
Комментарии:
1. можете ли вы опубликовать свою модель mongoose?
2. @dimitristseggenes Хорошо, я добавил свою модель mongoose. Тем не менее, я могу сохранять новые записи без проблем
3. Выглядит неплохо. Я не знаю, почему это не работает. Возможно, проблема в
forEach
цикле. Попробуйте использоватьfor .. of
цикл, подобный этому<% for (let item of result) { %>
4. @dimitristseggenes да, он по-прежнему сообщает, что он не определен. Я в тупике. Всякий раз, когда я пытаюсь загрузить что-либо из базы данных и отобразить это с помощью этого метода, я сталкиваюсь с этой проблемой
5. каков результат
console.log(data);
beforeres.render
?