问题描述
我正在我的项目中处理(提交和回滚)事务部分,我的前端是Vuejs,而我正在使用的后端是Loopback-3x框架,我已经在代码中应用了事务,如果数据正确,事务将正常工作,事务将被提交,如果有错误,它将得到回滚,现在问题是:在提交/回滚数据之后,我将状态代码返回为已提交状态= 200,回滚= 401,但是状态代码没有返回,即使我使用cb(回调),它也会抛出错误回调,该回调已被调用。所以我没有得到解决方案。希望这是可以理解的,否则我也将同时应用前端和后端的代码。
Front-End Code
_thiss.$http.post('/api/sales/saledata',data).then(function (response) {
console.log('response aaya')
console.log('sales id ' + JSON.stringify(response))
var saleid = response.data.data.saleid;
_thiss.haserror.message= 'Sales Added Successfully';
setTimeout(function(){ _thiss.haserror.message='';},2000);
}).catch(function (error) {
console.log('error ' + error)
_this.loading=false
});
Back-End Code
Sales.saledata = async (ctx,options,cb) => {
Sales.beginTransaction('READ COMMITTED',async (err,tx) => {
try{
const pur = app.models.saledetail
const qtydata = ctx.req.body.pur_items
var saleid;
let cmpid = await pur.findOne({ where: { company_id: ctx.req.body.companyid,regcity_code: ctx.req.body.regcity_code },order: 'id DESC' })
if (cmpid == null) {
saleid = 1;
}
else {
saleid = parseInt(cmpid.sales_id) + 1;
}
for (var i = 0; i < qtydata.length; i++) {
await Process(ctx,i,saleid,tx).then({transaction:tx});
}
var data1 = {
company_id: ctx.req.body.companyid,regcity_code: ctx.req.body.regcity_code,sales_id: saleid,}
pur.create(data1,{transaction: tx})
var result_done1 = {status_code = 200,saleid:saleid}
tx.commit();
return result_done1;
} catch (err) {
console.log(err)
var result_done1 = {status_code = 401,saleid:saleid}
tx.rollback();
return result_done1;
}
});
};
function Process(ctx,tx) {
try{
let data = {
company_id: ctx.args.options.accesstoken.cmpname,regcity_code: ctx.args.options.accesstoken.regcity,sales_id: saleid
}
return new Promise((resolve,reject) => {
resolve(Sales.create(data,{transaction:tx}))
})
} catch (error) {
console.log('erro r ' + error)
}
}
'''
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)