sequelize 交易而不是交易的功能

Functions with sequelize transactions and not transactions

我正在使用 sequelize 开发一个应用程序,我刚开始使用 transaction() 因为我希望我的查询能够在错误时回滚。所以我有我的常规功能

const customer = await Customer.findOne({ where: { email: { [Op.eq]: body.email } } });

现在我也有

const newCustomer = await Customer.create(body, { transaction: t });

目前一切正常,但我可以帮助思考在同一操作中同时使用这两种方法在性能方面是否是个好主意。 (寻找一个已经创建的客户,如果它不存在,则根据电子邮件地址创建一个新客户)我认为他们都在使用不同的交易,但我不确定这会如何影响我的池最大数量。

PD:我遇到了一些问题,其中查询似乎阻塞了我的节点,我必须重新启动服务器才能使一切重新正常工作。

在此先感谢您的帮助!

如果您忘记在一个或多个查询中指明一个事务,那么它可能会导致死锁,因为您将有两个事务 changing/reading 相同或链接的记录。 即使在像 findOne:

这样的读操作中,你也应该指出一个事务
const customer = await Customer.findOne({ where: { email: { [Op.eq]: body.email } }, transaction: t });