Я не уверен во всех RBDMS, которые поддерживает knex, но поскольку PostGres & MySQL являются асинхронными c (они реализуют какой-то протокол связи между вашим узлом и сервером БД), поэтому он использует асин * c характер Node.js.
Вы можете легко проверить это, используя asCallback
вместо Promise API.
knex
.transaction(async (trx) => {
console.log('1');
trx
.insert(data)
.into('customer')
.returning('id')
.asCallback(function (err, rows) {
rows;
});
console.log('2');
})
.asCallback(function (err, rows) {
console.log('3');
});
console.log('4');
И убедитесь, что первым console.log
будет 4
, это означает, что задача поставлена в очередь в событии l oop ->, что означает, что она была асин c.