#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. это было так просто, большое вам спасибо, как я могу выбрать вас в качестве лучшего ответа (я здесь новичок)?