В моем приложении Node Express я хочу получить все комментарии к уроку и изменить каждый комментарий, добавив поле fullname
к каждому комментарию. Для получения полного имени пользователя я определил функцию findFullNameByUserId
в UserController.js
. Я использую findAllCommentsByLessonId()
в CourseController.js
следующим образом. Однако, когда я использую его, я всегда получаю пустой массив. Как я могу использовать findFullNameByUserId
в findAllCommentsByLessonId()
, чтобы к каждому объекту комментария можно было добавить поле fullname
?
CourseController. js
findAllCommentsByLessonId: async (courseId,lessonId,callback) => {
Course.find({_id: courseId}, function(err, course) {
if (err) {
callback(err, null);
} else {
const lesson = course[0].lessons.filter(l => l._id !== lessonId)
const comments = lesson[0].comments.map( async c => {
try{
const name = await UserController.findFullNameById(c.user)
return (
{
userId: c.user,
name: name,
content: c.content
}
)
}
catch(err){
console.log(err)
}
})
// console.log(comments) --> This always prints [{}]
callback(null, comments)
}
});
}
UserController. js
module.exports = {
findFullNameById: async (userId) => {
await User.find({_id: userId}, function(err, user) {
if (err) {
console.log(err)
} else {
return user[0].name+" "+( user[0].lname ? user[0].lname : "")
}
});
}
}