Как выполнить await обращение к mongoose через foreach?

Есть запись в таблице, которая хранит в себе имя, описание и массив с id пользователей. Нужно пройтись по этому массиву, дождаться каждого ответа и записать это в объект, который я отправлю пользователю, чтобы на выходе он получал на id пользователей, а их объект.
console.log('\x1b[33m%s\x1b[0m', "Старт")
await room.users.map(async (id, i) => {
    console.log(`${i} запрос к бд`)
    users[id] = await User.findById(id)
    console.log(`${i} ответ`)
});
console.log('\x1b[36m%s\x1b[0m','Отправлено')

В консоль выводится, вот так 60bf252398781218545731.png
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@evgzap Автор вопроса
Я пришел к другому методу. Я обратился к Бд следующим способом
let arrayUsers = await User.find({_id:{$in:room.users}})

затем через arrayUsers.map() я добавил в нужную мне переменную то что я хотел.
arrayUsers.map((elem, i)=>{
    users[elem._id] = elem
})

и все работает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
Никак. Используйте обычный for (или for .. of).
Либо какие-нибудь библиотеки, например bluebirdjs.com/docs/api/promise.mapseries.html или аналогичные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы