Подтвердить что ты не робот

Где обращаться с ошибкой в ​​выражении запроса продолжения ORM?

Я использую Sequelize ORM в Node/Express.

У меня есть две таблицы: Пользователь и Элемент. Элемент имеет внешний ключ, связанный с UserId.

Когда я пытаюсь создать элемент с UserId, который является недопустимым (нет в таблице Users), вызывается "SequelizeForeignKeyConstraintError" и приводит к сбою приложения из-за необработанного.

У меня есть проблема:

Где я могу обработать ошибку?

Вот мой код.

.post(function(req,res){
        models.Item.create({
            title : req.body.title,
            UserId : req.body.UserId
        }).then(function(item){
            res.json({
                "Message" : "Created item.",
                "Item" : item
            });
        });
    });
4b9b3361

Ответ 1

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

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

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

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

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