Как сделать маршрут синхронным

-1
задан Xvistasss 18 January 2019 в 12:07
поделиться

1 ответ

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 })
})

В приведенном выше примере также используются сокращенные имена свойств и деструктуризация объекта

.
0
ответ дан Francisco Mateo 18 January 2019 в 12:07
поделиться
Другие вопросы по тегам:

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