想从sequelize ORM中检查异常或失败原因

时间:2018-08-24 12:40:09

标签: node.js express error-handling sequelize.js

我想要nodeJS(快速)中的某种机制,该机制可以在使用序列化ORM处理MySQL数据库中的记录时检查任何错误。 例如:

sequelize.create({ 
    name: req.body.name,
    email: req.body.email })
.then((data)=> { res.send('mysuccess message'); })
.catch( (err) => { 
    if( <unique key is violated> ) { 
        res.send('myerrormessage');
    }
}));

谢谢大家。

2 个答案:

答案 0 :(得分:2)

Sequelize提供了可以在catch块中检查的错误类

http://docs.sequelizejs.com/class/lib/errors/index.js~UniqueConstraintError.html

sequelize.create({ 
    name: req.body.name,
    email: req.body.email })
.then((data)=> { res.send('mysuccess message'); })
.catch(Sequelize.UniqueConstraintError => {  
    res.send('myerrormessage');
}));

如果要使用try ... catch版本,则无法累计catch块,因此您可能需要使用

进行检查
if (err instanceof Sequelize.UniqueConstraintError)

答案 1 :(得分:0)

你在这里

  

sequelize.querysequelize中的所有查询使用,所以也许   您可以覆盖它并附加一个错误处理程序:

Sequelize.prototype.query = function () {
  return originalQuery.apply(this, arguments).catch(function (err) {
    // log the error 

    throw err;
  });
};

更多详细信息: DO READ