在回送Nodejs中使用事务在返回数据中发现问题

问题描述

我正在我的项目中处理(提交和回滚)事务部分,我的前端是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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...