В вашем первом фрагменте кода вы должны установить
console.log(result);
//this should print [["name1"]["name1", "name2"],["name3", "name1"]]
res.redirect("/");
в функции обратного вызова findById
. Например:
app.get("/test", async (req, res) => {
var result = [];
users.findById(mongo.ObjectID("IDString"), async (err, res) => {
result = await res.getGroups(users, messages);
console.log(result);
//this should print [["name1"]["name1", "name2"],["name3", "name1"]]
res.redirect("/");
});
});
Это из-за асинхронной природы Javascript. Прочитайте статью ниже
https://medium.com/better-programming/is-javascript-synchronous-or-asynchronous-what-the-hell-is-a-promise-7aa9dd8f3bfb
Если вы хотите использовать парадигму async / await, вы можете написать этот код так:
app .get ("/ test", asyn c (req, res) => {var result = [];
result = await users.findById(mongo.ObjectID("IDString"));
console.log(result);
//this should print [["name1"]["name1", "name2"],["name3", "name1"]]
res.redirect("/");
});
Во втором фрагменте кода, Вы должны использовать ожидание или обратный вызов. Как описано выше.