Как я могу использовать promise.all с этой функцией:
function getUsersGroups(users, req) {
users.forEach(function(user) {
user.groups = [];
db.collection("groups")
.find({ "users._id": String(user._id) })
.toArray(function(err, docs) {
user.groups = docs;
});
});
return users;
}
Я не знаю, как это сделать, спасибо.
PS: массив пользователей не актуализируется с документами (они нормально работают с логами).
Это моя вторая попытка:
function getUsersGroups(users, req) {
users.forEach(
(user, index, array) => (
array[index].user =[]
array[index].user.groups = myApiCall(user))
);
function myApiCall(user) {
db.collection("groups")
.find({ "users._id": String(user._id) })
.toArray(function(err, docs) {
console.log(docs);
return docs;
});
}
return users;
}
array[index].user.groups = myApiCall(user))
^^^^^
SyntaxError: Unexpected identifier
Редактировать:
Итак, наконец, я использую эту функцию, как сказал Аши sh (она получает все группы, в которых находится пользователь, и обновляет модель пользователей):
async function getUsersGroups(users, req) {
await Promise.all(users.map(user => {
return db.collection("groups")
.find({ "users._id": String(user._id) })
.toArray()
.then(group => {
user.groups = group;
})
}));
return users;
}
И я звоню вот так внутри другой node.js функции:
getUsersGroups(docs, req)
.then(users => {
res.send(users);
})
.catch(error => {
// if you have an error
});
Большое спасибо!