Tôi nhận được kết quả chính xác, và thực sự, hai hoạt động này đang được coi là một đơn vị giao dịch duy nhất; nếu một thất bại, cả hai đều thất bại.Giao dịch Knex với Lời hứa
Trong ví dụ mã này: tôi đang làm một giao dịch của
(1) chèn (2) cập nhật
Con đường tôi tiếp cận nó là tổ hoạt động db của tôi bên trong .Sau đó. Câu hỏi của tôi là nếu mã này là chính xác do tai nạn? tôi mới đến lời hứa và knex.
knex.transaction(function(t) {
knex('foo')
.transacting(t)
.insert({id:"asdfk", username:"barry", email:"[email protected]"})
.then(function() {
knex('foo')
.where('username','=','bob')
.update({email:"[email protected]"})
.then(t.commit, t.rollback)
})
})
.then(function() {
// it worked
},
function() {
// it failed
});
Tác phẩm này, nhưng tôi cảm thấy như tôi đang làm điều gì đó sai. Đang tìm kiếm nhận xét.
Bạn có thể thử 1) thêm một số console.logs nơi '// nó worked' và '//nó thất bại' bình luận được, và 2) buộc tuyên bố chèn để thất bại bằng cách nào đó? Với tổ hợp hiện tại của bạn, t.rollback chỉ được gọi khi cập nhật không thành công, vì vậy tôi tưởng tượng nó sẽ không làm điều đúng nếu chèn không thành công. – user3374348