Лучший способ обнаружить ошибку в моделях? (Node.js Продолжение)

#javascript #node.js #express #sequelize.js

#javascript #node.js #выразить #sequelize.js

Вопрос:

Есть ли простой способ перехватить ошибку в API (сервере), который использует Node.js и продолжить (Модели)? Вот мой код (он использует async await):

 const router = express.Router()
const { Operations } = require('../models')

router.post('/operations/add', async (req, res) => {
    const operations = req.body
    await operations.create(operations)
    res.json(operations)
    console.log('op added!')
})

router.put('/operations/update/:id', async (req, res) => {
    const operationId = req.params.id
    const operationUpdatedData = req.body
    const operationById = await Operation.findOne({ where: { id: operationId } })
    const operationUpdated = await operationById.update(operationUpdatedData)
    res.json(operationUpdated)
    console.log('op updated!')
})

router.delete('/operations/delete/:id', async (req, res) => {
    const operationId = req.params.id
    await Operations.destroy({ where: { id: operationId } })
    res.send('op deleted!')
    console.log('op deleted!')
})

module.exports = router
 

Вот как я обрабатываю ошибку в клиенте:

 axios.post(`http://localhost:9000/operations/add`, data)
            .then(res => console.log(`op added! (${res.status})`))
            .catch(err => console.log(`wrong! (${err.response.status} )`))
 

Я не хочу ничего необычного, но не стесняйтесь пробовать все, что захотите!

Ответ №1:

Если вы хотите обработать конкретную ошибку, прикрепите .catch обработчик

 router.post("/operations/add", async (req, res) => {
  try {
    const operations = req.body;
    await operations.create(operations);
    res.json(operations);
    console.log("op added!");
  } catch (error) {
    // handle error here if you want to send on front simply send
    console.log(error)
    res.json(error.message)
  }
});
 

Если вы хотите обрабатывать ошибки в более общем плане (т. Е. Показывать Хорошее сообщение об ошибке, вместо того, чтобы убивать ваш сервер, вы можете захотеть взглянуть на необработанное исключение

https://nodejs.org/api/process.html#process_event_uncaughtexception

Если вы используете express, он также содержит некоторые средства обработки ошибок http://expressjs.com/en/guide/error-handling.html

Комментарии:

1. это было так просто, большое вам спасибо, как я могу выбрать вас в качестве лучшего ответа (я здесь новичок)?