Otrzymuję prawidłowy wynik, i rzeczywiście, te dwie operacje są traktowane jako pojedyncza jednostka transakcyjna; gdzie, jeśli się nie uda, oba zawodzą.Transakcja Knex z obietnicami
W tym przykładzie kodu: Ja dokonuję transakcji
(1) wstawić (2) zaktualizuj
Sposób, w jaki podejście to jest gniazdo moje operacje db wewnątrz .Następnie. Moje pytanie brzmi, czy ten kod jest poprawny przez przypadek? Jestem nowy w obietnicach i 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
});
To działa, ale mam wrażenie, że wciąż coś robię źle. Szukam komentarzy.
możesz spróbować: 1) dodanie kilku console.logs gdzie '// to worked' i'// nieudane są komentarze i 2) wymuszenie instrukcji wstawiania w jakiś sposób nie działa? Przy obecnym zagnieżdżaniu, t.rollback jest wywoływany tylko wtedy, gdy aktualizacja się nie powiedzie, więc wyobrażam sobie, że nie zrobiłoby to dobrze, gdyby wstawka się nie powiodła. – user3374348