【发布时间】:2018-03-30 00:27:33
【问题描述】:
Knex 的交易文档的代码如下所示:
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 使用,transacting 方法可以链接到任何查询,并传递您希望作为事务的一部分加入查询的对象。
我的问题是:
trx.insert().into('foo') 和 knex('foo').transacting(trx).insert() 之间有什么区别,为什么要使用其中一个而不是另一个?
【问题讨论】:
标签: javascript database postgresql transactions knex.js