Javascript sequelize ORM查询语句中的错误在哪里处理?

Javascript sequelize ORM查询语句中的错误在哪里处理?,javascript,express,sequelize.js,Javascript,Express,Sequelize.js,我正在Node/Express中使用Sequelize ORM 我有两个表,User和Item。项具有链接到UserId的外键 当我尝试创建一个用户ID无效(不在Users表中)的项目时,会抛出一个“SequelizeForeignKeyConstraintError”,并导致应用程序因未处理而崩溃 我的问题是: 我在哪里处理错误 这是我的密码 .post(function(req,res){ models.Item.create({ title : re

我正在Node/Express中使用Sequelize ORM

我有两个表,User和Item。项具有链接到UserId的外键

当我尝试创建一个用户ID无效(不在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
            });
        });
    });

如果要处理特定错误,请附加
.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


如果您使用的是express,它还包含一些错误处理功能

您可以通过执行以下操作来处理所有ORM错误,以返回HTTP 500状态和一些默认错误消息

router.use((error, request, response, next) => {
  response.status(error.status || 500).json({
    status: 'error',
    error: {
      message: error.message || serverErrorMsg,
    },
  });
});


上面的代码还允许您使用将发送到客户端的自定义消息抛出错误

如果您想捕获特定的SequelizeForeignKeyConstraintError错误,可以将其传递给catch函数
。catch(Sequelize.SequelizeForeignKeyConstraintError,function(err){//handle onky foreign key errors;})
是否可以通过HTTP 500状态和express中的默认错误处理程序来处理所有ORM错误?实际上,我不想添加
.catch(err=>{next(err)});
每当我访问数据库时。请添加等待版本,然后重试{…}catch(err){…}