Transaction de Knex avec des promesses
Je reçois le bon de sortie, et en effet, ces deux opérations sont traitées comme une seule unité transactionnelle; où, si l'on échoue, les deux échouent.
Dans cet exemple de code: je suis en train de faire une transaction de
(1) insérer
(2) mise à jour
La façon dont je m'approche il est de mon nid db opérations à l'intérieur de l' .alors.
Ma question est de savoir si ce code est correct par accident? je suis nouveau à des promesses et des 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
});
Cela fonctionne, mais je sens que je fais quelque chose de mal encore. La recherche de commentaires.
source d'informationauteur david
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de retourner une promesse de la requête interne pour l'extérieur de la chaîne à être enchaîné avec qui.
Vous avaler tout des erreurs parce que vous n'avez pas renvoyer d'eux - il est préférable d'utiliser
.catch()
pour cette raison, car il rend plus claire de ce qui se passe - c'est ce qui allait se passer avec la normaletry-catch
déclaration.Pour mieux comprendre, voici la version synchrone qui est "émulé":