Jos*_*ale 28 javascript express sequelize.js
我在Node/Express中使用Sequelize ORM.
我有两个表,User和Item.Item具有链接到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
});
});
});
Run Code Online (Sandbox Code Playgroud)
Jan*_*ier 33
如果要处理特定错误,请附加.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;
});
Run Code Online (Sandbox Code Playgroud)
如果你想更广泛地处理错误(比如,显示一个友好的错误消息,而不是杀死你的服务器,你可能想看看unhandledexception
https://nodejs.org/api/process.html#process_event_uncaughtexception
如果您使用快递,它还包含一些错误处理设施http://expressjs.com/en/guide/error-handling.html
小智 5
您可以通过执行以下操作来处理所有 ORM 错误以返回 HTTP 500 状态和一些默认错误消息
router.use((error, request, response, next) => {
response.status(error.status || 500).json({
status: 'error',
error: {
message: error.message || serverErrorMsg,
},
});
});
Run Code Online (Sandbox Code Playgroud)
上面的代码还允许您使用将发送到客户端的自定义消息抛出错误
| 归档时间: |
|
| 查看次数: |
29213 次 |
| 最近记录: |