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(...)'樣式。 –