如何在两个不同的 ORM 中使用事务

How to use transactions in two different ORMs

我有一个使用 sequelize ORM and want to move to Objection.js ORM 的代码库。有没有办法重用在 Objectionjs 的续集中开始的交易?这样我就可以迭代迁移,而不必一次重写所有内容。

如果您可以获得由 Sequelize 启动的 knex 交易,您可以将其传递给 objection.js Model.query(trx)。

如果 Sequelize 不在幕后使用 knex 事务,那么如果您可以获得 Sequelize 事务使用的原始数据库连接,您可以使用 .connection(rawConnection) 查询构建器方法来定义要使用的原始连接对于 knex 个查询。

但是,您不应使用这两个库的事务功能来防止多次启动/提交事务。

知道 Sequelize 的人可以通过告诉 if/how 它允许获取 Sequelize 事务使用的连接来完成这个答案。