【发布时间】:2017-12-16 01:17:16
【问题描述】:
我在环回中使用 knex 进行 mysql 的 DB 操作。 我的任务是使用事务更新 2 表。 当我在一个表中输入新条目时,我想使用该条目的 id 进行第二次查询操作。
但是当事务抛出错误时,如果第二个表条目抛出错误,它不会回滚数据/删除第一个表条目。但在我的情况下,事务总是提交而不是回滚我把我的示例代码放在下面:
addTest : (data) => {
return new promise(function(resolve, reject) {
knex.transaction(function(t) {
return knex('foo')
.transacting(t)
.insert({
foo_id: data.foo_id ? data.foo_id : null,
foo_name: data.foo_name ? data.foo_name : null,
date_entered : new Date()
})
.then(function() {
return knex('bar')
.transacting(t)
.insert({
bar_id: data.bar_id ? data.bar_id : null,
bar_name : data.bar_name ? data.bar_name : null
})
})
.then(t.commit)
.catch(function(e) {
t.rollback();
throw e;
})
})
.then(function() {
// it worked
// resolve('sucess');
console.log('success');
})
.catch(function(e) {
// it failed
console.log('error'+e);
});
});
}
请给我合适的建议。 谢谢你
【问题讨论】:
标签: mysql node.js loopbackjs knex.js