sequelize事务处理问题
目前需求是同时添加2条数据库记录,这2个记录分别添加到A数据库表和B数据库表中 我的A数据库表:
zzzzzzzzzdddddz.jpg
我的B数据库表:
yyyyyyyyyyy.jpg
我在网上查到如下的代码:
fffffffffff.jpg
我的代码像下面这么写,为什么添加的是正确数据他直接回滚了啊?麻烦大家了~~~~~
代码开始:不知道为什么前2行不自动识别为代码
sequelize.transaction(function (t) { return BoxInfoController.addInfo(function (a,result) {
}, {transaction:t})
.then(function(){
return BoxInfoController.addOa(function (a,result) {}, {transaction:t})
});
}).then(function (results){
/* 操作成功,事务会自动提交 */
}).catch(function(err){
/* 操作失败,事件会自动回滚 */
});
10 回复
现在看到回调就头大,不知道是不是应该这么写
add: function(addBoxInfo, callback) {
return _dbManage.transaction(function (t) {
return BoxInfoModel.create(addBoxInfo, { transaction: t })
.then(function (boxInfo) {
return BoxOaModel.create(addBoxInfo, { transaction: t })
.then(function (boxOa) {
return 'result'; //这里自己写需要的数据
});
});
}).then(function (result) {
callback(null, result);
}).catch(function (err) {
callback(err);
});
}
然后执行
BoxInfoController.add(addBoxInfo,function(err,result){
//
});
用async/await,大概这样写: sequelize.transaction(async t => { await BoxInfoModel.create(addBoxInfo, { transaction: t }) await BoxOaModel.create(addBoxInfo, { transaction: t }) })
可以自己加try catch