Я получаю документ от mongodb, который содержит массив с комментариями к этому документу.В комментарии указан _id пользователя, который написал комментарий.
Теперь мне нужно получить имя пользователя на основе _id пользователя, но я столкнулся с несколькими проблемами.
У меня есть следующий код, который, очевидно, не работает,но я надеюсь, что это может дать вам представление о том, чего я пытаюсь достичь.
//MORE CODE... (No need to show this here, just a promise, some try catch and so on)
let article = await Article.findOne({_id:articleid})
for(var i = 0; i<=article.comment.length-1; i++){
User.findOne({_id:article.comment[i].user}).then((user)=>{
article.comment[i].username = user.username
})
}
return resolve(article)
Я просмотрел несколько документов, но не смог найти работающего решения.Я попытался использовать Promise.all, поиграл с большим количеством асинхронных, ожидающих, попытался добавить счетчик в цикл for и разрешить обещание после завершения цикла, но пока ничего не получалось.
Вот как выглядит статья в моей базе данных:
{
"_id" : ObjectId("5c18c1cbc47e5e29d42e4b0e"),
"completed" : false,
"completedAt" : null,
"comment" : [
{
"_id" : ObjectId("5c18c95e328c8319ac07d817"),
"comment" : "This is a comment",
"rating" : [ ],
"user" : ObjectId("5c18b76e73236d2168eda2b4")
},
{
"_id" : ObjectId("5c18fb578de5741f20a4e2bd"),
"comment" : "Another comment",
"rating" : [ ],
"user" : ObjectId("5c18b76e73236d2168eda2b4")
}
]
}
Я довольно плохо знаком с nodejs и mongodb, так что я надеюсь, что вы сможете помочь новичку, как я.
Спасибо за вашу помощь