У меня есть функция, которая должна возвращать результат,
У меня есть массив, для которого я делаю foreach, и я выбираю данные из базы данных с функцией с обещанием для каждого идентификатора в массиве, когдавызывая эту последнюю функцию, я использую async await, но окончательный результат возвращается до выполнения функций.
Пользователь контроллера
myFunction: function (req, res) {
let headerAuth = req.headers['authorization'];
let login = utils.getUser(headerAuth);
if (login) {
//some function to get data from database
ModelUsers.getData(login, function (err1, result) {
if (!err1) {
let data = [];
result.forEach(async function (r) {
//function with promise, see next
let dataxx = await ModelUsers.getDataWithPromise(r._id);
data.push(dataxx);
console.log("**dataxx : ", dataxx)
})
res.json({ success: true, data: data })
}
})
}
},
** Model Users **
module.exports.getDataWithPromise = function(id) {
return new Promise((resolve, reject) => {
Users.findOne({ _id: id })
.exec(function (err, doc) {
resolve(doc)
})
})
}
Я получаю пустой результат и вконсоль, у меня отображается результат после успешного возврата вызова
{
"success": true,
"data": []
}
GET /users/myFunction 200 21.379 ms - 26
**dataxx : {mydata:[{"a": 1, "b":2}, {"c":3, "d":4}]}
как я могу получить результат?