BookShelfJS:交易中的多个功能



我试图将多个功能包裹在单个事务中。虽然没有扔任何错误,但交易没有提交。

下面是样本片段。

function doSomething(ids){
    bookshelf.transaction(function(trx){
        if(someCondition){
            new Service().save({ 'name': service.name },{transacting:trx}).then(function(){
                doSomeDBUpdate1(ids,trx);
            });
        }else{
            doSomeDBUpdate1(ids,trx);
        }
    })
}
function doSomeDBUpdate1(ids,trx){
    new accounts({ id: accountId }).services().attach(serviceIds,{transacting:trx}).then(function(){
    //do something
    })
}

交易不知道何时您完成了新的查询...所以现在它永远不会提交。

这应该有效:

function doSomething(ids){
  bookshelf.transaction(function(trx){
    if(someCondition){
      return new Service()
        .save({ 
          'name': service.name 
        }, {transacting:trx})
        .then(function(){
          return doSomeDBUpdate1(ids,trx);
        });
    } else {
      return doSomeDBUpdate1(ids,trx);
    }
  })
}
function doSomeDBUpdate1(ids,trx){
  return new accounts({ id: accountId })
    .services()
    .attach(serviceIds,{transacting:trx})
    .then(function() {
      // do something... if async remember to return the promise
    });
}

相关内容

  • 没有找到相关文章

最新更新