Where to handle the error in a sequelize ORM query statement?
If you want to handle the specific error, attach a .catch
handler
models.Item.create({
title : req.body.title,
UserId : req.body.UserId
}).then(function(item){
res.json({
"Message" : "Created item.",
"Item" : item
});
}).catch(function (err) {
// handle error;
});
If you want to handle errors more generally (i.e. show a nice error message, instead of killing your server, you might want to have a look at unhandledexception
https://nodejs.org/api/process.html#process_event_uncaughtexception
If you are using express, it also contains some error handling facilities http://expressjs.com/en/guide/error-handling.html
You can handle all ORM errors to return an HTTP 500 status and some default error message by doing something like below
router.use((error, request, response, next) => {
response.status(error.status || 500).json({
status: 'error',
error: {
message: error.message || serverErrorMsg,
},
});
});
The above code also allows you to throw errors with custom messages that will be sent to the client by passing the error to the next
function
const error = new Error(/* your error message */);
error.status = 409;
next(error);