【发布时间】: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 解决。这意味着承诺是同时并行执行的。所以你描述的顺序,似乎是合乎逻辑的。
标签: node.js sequelize.js hook