Sequelize查询执行顺序错误
Posted
技术标签:
【中文标题】Sequelize查询执行顺序错误【英文标题】:Sequelize query execution order is wrong 【发布时间】:2020-04-11 00:01:11 【问题描述】:我有这段代码,
我的创建后钩子以错误的顺序执行数据库查询
afterCreate: async (instance1, transaction ) =>
const model2 = this.db.getModel('Model2');
// PART 1
const instance2 = await model2.findOne(
where: id: instance.model2Id ,
transaction,
);
// PART 2
return mission.update(..., transaction );
当使用 BulkCreate(2 items) 时,我不知道为什么查询执行的顺序是,
PART 1(第一)-> PART 1(第二)-> PART 2(第一)-> PART 2(第二)。
有什么提示吗?
非常感谢。
【问题讨论】:
你好,我记得,查看 sequelize 的代码,他们使用 Promise.map 来处理传递给 bulkCreate 的多个实例。一个 promise.map 等待所有的 Promise 解决。这意味着承诺是同时并行执行的。所以你描述的顺序,似乎是合乎逻辑的。 【参考方案1】:您似乎没有等待更新完成。试试:
// PART 2
return await mission.update(..., transaction );
【讨论】:
以上是关于Sequelize查询执行顺序错误的主要内容,如果未能解决你的问题,请参考以下文章