Ich bekomme die richtige Ausgabe, und tatsächlich werden diese beiden Operationen als eine einzige Transaktionseinheit behandelt; wo, wenn einer versagt, beide versagen.Knex Transaktion mit Promises
In diesem Codebeispiel: i eine Transaktion von
tue(1) einfügen (2) aktualisiert
So wie ich es Ansatz zu nisten im Inneren des .then meine db ist Operationen. Meine Frage ist, ob dieser Code zufällig ist? Ich bin neu zu Versprechen und 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
});
Das funktioniert, aber ich fühle mich, als würde ich immer noch etwas falsch machen. Auf der Suche nach Kommentaren.
können Sie versuchen, 1) das Hinzufügen einiger console.logs wo die '// es worked' und'// es ist fehlgeschlagen' Kommentare sind, und 2) erzwingt die Insert-Anweisung irgendwie fehlschlagen? Mit Ihrer aktuellen Verschachtelung wird die t.rollback nur aufgerufen, wenn das Update fehlschlägt, also würde ich mir vorstellen, dass es nicht das Richtige tun würde, wenn das Einfügen fehlschlägt. – user3374348