Mongoose не поддерживает синхронные операции. Вам нужно превратить ваш обработчик маршрута в функцию async
, чтобы воспользоваться await
. Это заставляет это казаться / читать как это синхронно.
Обработка ошибок должна быть делегирована промежуточному программному обеспечению для ошибок Express [ .
router.get("/history/:docket_no", async (req, res) => {
const { docket_no } = req.params
const comments = await Comments.find({ docket_no }).exec()
if (comments.length < 1) {
res.status(400).json({ msg: "No comments found."})
return
}
const mappedComments = []
const mappedImages = []
for(let i = 0; i < comments.length; i++) {
const images = await CommentImages
.find({ comment_id: comments[i]._id })
.exec()
for(let j = 0; j < images.length; j++) {
const filePath = images[j].comment_image
const fileName = filePath.split("\\")
mappedImages[j] = {
filesName: fileName[fileName.length - 1],
filePath
}
}
console.log(`Images ${mappedImages}`)
const {
_id,
user_name,
role_id,
message,
create_date
} = comments[i]
mappedComments[i] = {
id: _id,
user_name,
role_id,
message,
create_date,
files: mappedImages
}
}
res.json({ comments: mappedComments })
})
В приведенном выше примере также используются сокращенные имена свойств и деструктуризация объекта
.