1
Knex对交易文档中有代码看起来像这样:何时使用Knex交易()VS链断TRX对象
knex.transaction(function(trx) {
var books = [
{title: 'Canterbury Tales'},
{title: 'Moby Dick'},
{title: 'Hamlet'}
];
return trx
.insert({name: 'Old Books'}, 'id')
.into('catalogues')
.then(function(ids) {
return Promise.map(books, function(book) {
book.catalogue_id = ids[0];
// Some validation could take place here.
return trx.insert(info).into('books');
});
});
})
在这里,所以我已经看到了广泛的使用功能transacting()
的举例说是这样的:
knex.transaction(function(trx) {
knex('foo')
.transacting(trx)
.insert({id:"bar", username:"bar"})
// etc
})
Knex介绍transacting()
举例类似于上面:
由knex.transaction使用,交易方法可链接到任何查询,并将您希望加入查询的对象作为交易的一部分传递给。
我的问题是:
是什么trx.insert().into('foo')
和knex('foo').transacting(trx).insert()
你为什么要使用一个,而不是其他的区别?
这的确是一个风格问题。使用'.transacting()'是老方法,像knex实例一样使用'trx'是一种新方法。后来的方式被添加,以便更难忘记设置查询事务,这很难找到错误。所以通常应该使用'trx('table')。insert(...)'样式。 –