我得到了正确的输出,实际上,这两个操作被视为单个事务单元; 如果一个失败,两个都失败了.
在这个代码示例中:我正在做一个事务
(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)
这有效,但我觉得我还在做错事.寻找意见.