【发布时间】:2018-04-25 08:22:58
【问题描述】:
我正在尝试编写一个 Sequelize 迁移脚本 win,我正在尝试更新我的数据库,但它有许多异步操作(数据库查询,然后更新具有特定 id 的数据库)
这是我的代码
return db.organizationEntries
.findAll()
.then((entries) => {
return entries.forEach(entry => {
console.log(entry);
db.organizationEntries
.findAll({
attributes: [
[
db.sequelize.fn(
'MAX',
db.sequelize.col('organizationEntries.serial_number')
),
'maximum_serial_no'
]
],
where: {
organizationId: entry.organizationId
}
})
.then(orgEntry => {
console.log(orgEntry[0].dataValues.maximum_serial_no);
let data = { serialNumber: orgEntry[0].dataValues.maximum_serial_no + 1 };
console.log(data)
//problem
db.organizationEntries.update(data, {
where: {
id: entry.id
}
})
.then((result) => {
console.log(result);
})
});
// promises.push(promise);
});
// return Promise.all(promises);
})
实际上我想要做的是我试图从数据库中获取所有orgEntries 的列表,然后我找到那个organization_id 的最大序列号,然后更新那个特定的 orgEntry,就像所有这些循环操作
现在问题来了,所有事情都按顺序进行,但是在找到 max_serial_no 之后,它没有更新数据库,我无法解决我应该做些什么来使异步调用按此顺序工作
【问题讨论】:
-
return entries.forEach不会做你想做的事 -forEach返回未定义。你的// promises.push(promise);相关吗? -
是的,它不会返回任何东西
-
@CertainPerformance 我试图将此更新放入 Promise.all() 但我想按顺序发生所有事情,因为我已经提到过其他错误的 max_serial_no 会出现
-
@CertainPerformance 我试过 async 和 await 但没用
-
报错
标签: javascript promise sequelize.js es6-promise ecmascript-5