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查询执行顺序错误的主要内容,如果未能解决你的问题,请参考以下文章

SQL执行顺序

关于Oracle语句的执行顺序

在 sequelize 中检查 mysql 连接

MySQL各部分的执行顺序

sql语句执行顺序、

select查询语句执行顺序