Я тестирую вождение ES7 async/await proposal с помощью this module, чтобы подражать ему. Я пытаюсь сделать knex.js транзакции с ними хорошо, в качестве отправной точки.Commit/rollback транзакция knex с использованием async/wait
Пример кода:
async function transaction() {
return new Promise(function(resolve, reject){
knex.transaction(function(err, result){
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
}
// Start transaction from this call
insert: async (function(db, data) {
const trx = await(transaction());
const idUser = await(user.insertData(trx, data));
return {
idCidUserstomer: idUser
}
})
Как я могу commit()
или rollback()
если транзакция успешно или не?
1 купюру здесь - для какая-то странная причина, поместив часть 'return {idCustomer: idCustomer}' внутри блока 'try', делает ее тиканью просто отлично, иначе она зависает, так как в части ниже' try..catch' не запускается –
Попробуйте использовать 'await' на trx.commit и trx.rollback, в противном случае не слишком уверен. –
'Попробуйте использовать wait at trx.commit/trx.rollback' - не работает, но я буду копаться и опубликовать комментарий здесь. –