相关疑难解决方法(0)

Knex交易与承诺

我得到了正确的输出,实际上,这两个操作被视为单个事务单元; 如果一个失败,两个都失败了.

在这个代码示例中:我正在做一个事务

(1)插入(2)更新

我接近它的方法是将我的数据库操作嵌套在.then中.我的问题是,这个代码是偶然的吗?我是承诺和knex的新手.

knex.transaction(function(t) {
   knex('foo')
   .transacting(t)
   .insert({id:"asdfk", username:"barry", email:"barry@bar.com"})
   .then(function() {
       knex('foo')
       .where('username','=','bob')
       .update({email:"bob@foo.com"})
       .then(t.commit, t.rollback)
   })
})
.then(function() {
 // it worked
},
function() {
 // it failed
});
Run Code Online (Sandbox Code Playgroud)

这有效,但我觉得我还在做错事.寻找意见.

database transactions node.js promise

13
推荐指数
2
解决办法
2万
查看次数

试图了解promisification如何与BlueBird一起使用

我正在尝试使用Bluebird库为Node.js包围承诺.

下面是一个简单的例子,它不能像我期望的那样工作.

var Promise = require("bluebird");

var myObj = {
  add: function(op1, op2) {
    return op1 + op2;
  }
};

// Sync call to add method -> 7
console.log(myObj.add(3,4));

var myObjAsync = Promise.promisifyAll(myObj);

// Async call to promisified add method -> nothing written to console
myObjAsync.addAsync(2,3).then(function(data) {
  console.log(data);
  return data;
})
Run Code Online (Sandbox Code Playgroud)

我要么错过承诺或蓝鸟的一些(主要)概念.

在此先感谢您的帮助.

编辑:根据jfriend00的反馈修改(现在的工作版本).

var Promise = require("bluebird");

var myObj = {
  add: function(op1, op2) {
    return op1 + op2;
  }
  , add2: function(op1, op2, callback) { …
Run Code Online (Sandbox Code Playgroud)

node.js bluebird

6
推荐指数
1
解决办法
3107
查看次数

使用async/await提交/回滚knex事务

我正在测试使用此模块驱动ES7异步/等待提议来模拟它.我正在尝试让knex.js交易与他们合作,作为一个起点.

示例代码:

async function transaction() {
  return new Promise(function(resolve, reject){
    knex.transaction(function(err, result){
      if (err) {
        reject(err);
      } else {
        resolve(result);
      }
    });
  });
}

// Start transaction from this call

insert: async (function(db, data) {
 const trx = await(transaction());
 const idUser = await(user.insertData(trx, data));

 return {
    idCidUserstomer: idUser
  }
})
Run Code Online (Sandbox Code Playgroud)

如何commit()rollback()如果交易成功或失败?

javascript async-await knex.js

6
推荐指数
2
解决办法
3326
查看次数