javascript - knex 事务无法与异步等待一起使用

标签 javascript mysql transactions knex.js

我正在使用 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/

相关文章:

javascript - 如何从具有append的li元素获取对象参数

javascript - .show() 无法正常工作(没有动画,没有更多代码)

javascript - Emscripten:如何从javascript获取c中的char数组

php - 在 if-else 中重新生成随机数(php)

Javascript正则表达式(提取字符串)

java - 在没有xml的情况下在spring boot中连接到mysql数据源

php - #2002 - 由于目标机器主动拒绝,无法建立连接。服务器

mysql - MySQL InnoDB 事务期间的锁定

java - 当 @Transactional 注解中指定回滚已检查异常时,Spring 是否会回滚运行时异常

ruby-on-rails - 保存事务失败后救援中的rails对象