我正在使用 knex 和节点,当我尝试使用事务时,它不起作用并出现以下错误
未处理的拒绝类型错误:容器不是函数
,
我不知道为什么发生了,有人知道我的语法有什么问题或者知道更好的语法吗?
const insertData = async (tableName, data) => {
try {
return knex(tableName)
.insert(data);
} catch (err) {
logger.error('error function insertData :global model', err);
return false;
}
};
const createAccount= async (dataAddress, dataAccount) => {
let trx = knex.transaction();
try {
const insertDataAddress = await insertData('mdm_address_contact', dataAddress);
await global.insertData('mdm_account1', Object.assign({ id_address: insertDataAddress[0] }, dataAccount));
trx.commit();
return true;
} catch (err) {
trx.rollback(err)
logger.error('error in function create account, mdm address contact:model', err);
return false;
}
};
最佳答案
代码中存在各种错误,类似这样的代码应该可以更好地工作(尽管这段代码看起来仍然很糟糕):
const insertData = async (tableName, data) => {
try {
return await knex(tableName).insert(data);
} catch (err) {
logger.error('error function insertData :global model', err);
throw err;
}
};
const createAccount = async (dataAddress, dataAccount) => {
try {
return await knex.tranasaction(async trx => {
const insertDataAddress = await insertData('mdm_address_contact', dataAddress);
await insertData('mdm_account1', Object.assign({ id_address: insertDataAddress[0] }, dataAccount));
});
} catch (err) {
logger.error('error in function create account, mdm address contact:model', err);
throw err;
}
};
关于javascript - knex 事务无法与异步等待一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55808446/