Первое наблюдение:
User.find()
- это асинхронная функция, т. Е. Основной поток программы не будет ждать ее выполнения, поэтому undefined
будет передано объекту JS. Чтобы избежать этого, вы должны вернуть обещание или использовать asyn c await. Вот пример:
async function getUsers() {
const foundItems = await User.find({tutor:false})
return foundItems;
}
// Find sessions
async function getSessions() {
const foundItems = await Session.find({});
return foundItems;
}
app.get('/admin', async function(req, res){
res.render("pages/admin", {
users: await getUsers(),
sessions: await getSessions()
})
});
Это легче читать. Вы можете сделать его короче:
async function getUsers() {
return User.find({tutor:false});
}
// Find sessions
async function getSessions() {
return Session.find({});
}
app.get('/admin', async function(req, res){
res.render("pages/admin", {
users: await getUsers(),
sessions: await getSessions()
})
});
Поскольку вы напрямую возвращаете foundItems (не используя его где-либо), вам не нужно ждать его, вы можете напрямую вернуть обещание для обратного вызова для ожидания.