Как предположил Джонршарп, это происходит потому, что код, извлекающий данные, является асинхронным. Это означает, что вам нужно реализовать какой-то обратный вызов, чтобы уведомить окружающую функцию о завершении операции. Простой пример:
index
app.get('/', authenticate, async function(req, res){
// console.log("DATA: " + getWorldStatsData());
everything = {
worldstats: await getWorldStatsData(),
}
res.render('index', {
data: everything
})
})
ваша функция:
function getWorldStatsData(){
return db.collection('worldstats').find({}).sort({"statistic_taken_at":-1}).limit(1).toArray((err, stats)=>{
return stats
})
// return stats
}
Пожалуйста, посмотрите на ссылку, предоставленную jonrsharpe для лучшего понимания