gpt4 book ai didi

node.js - Sequelize- Try block 不会捕获 model.create() 错误

转载 作者:行者123 更新时间:2023-12-03 22:35:25 25 4
gpt4 key购买 nike

如果在向数据库添加内容时发生错误(服务器端验证错误,例如包含非字母数字符号的字符串或其他内容),我希望能够重新路由网站用户。目前,即使 model.create() 失败,try-catch 块也不会捕获任何内容。如果尝试无效条目,我该如何重写它以使其脱离 try 块并重新路由回“/”?
这是我所拥有的(顺便说一句,Request 和 Ride1 是模型名称):

/* POST request */
router.post('/', function(req, res, next){

/*a bunch of variable initializations to get form data*/

try{
Request.create({
serial_num: serial_num,
meter_reading: meter_reading,
request_type: request_type
})
.catch(err => {
throw err
})

Ride1.create({
serial_num: serial_num,
meter_reading: meter_reading,
request_type: request_type
})
.catch(err => {
throw err
})

res.redirect('/thankYou')
}
catch (e){
console.log(e);
res.redirect('/');
}
});

.catch(err =>...) 的东西似乎没有做任何事情,只是让这个工作的一个微弱的尝试。如果我不需要任何建议,我想我可以做到。

最佳答案

使用 async/await 和 express-async-wrap 包:

const wrap = require('express-async-wrap')
...
router.post('/', async function(req, res, next){
try{
await Request.create({
serial_num: serial_num,
meter_reading: meter_reading,
request_type: request_type
})

await Ride1.create({
serial_num: serial_num,
meter_reading: meter_reading,
request_type: request_type
})

res.redirect('/thankYou')
}
catch (e){
console.log(e);
res.redirect('/');
}
}

关于node.js - Sequelize- Try block 不会捕获 model.create() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61532921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com