【发布时间】:2018-12-30 02:36:47
【问题描述】:
我正在使用 node/Express、Sequelize 和 MySQL,并试图链接一些承诺。
我有Project 模型,并且与hasMany 关系我有ProjectImages。我正在添加/更新特定项目 (chainedPromises) 的图像中的一些行,完成此任务后,我想返回该项目及其所有图像:
var chainedPromises = [];
// First resolve this group
data.ProjectImages.forEach((element) => {
chainedPromises.push(
models.ProjectImages.upsert(element, {
where: {
id: element.id,
},
})
);
});
Promise.all(chainedPromises)
.then((responses) => {
responses.map((response) => {
logJSON(response);
});
})
// Then look for the project and related models
.then(() => {
models.Projects.findById(req.params.id, {
include: [
{
model: models.ProjectImages,
},
],
})
// And return it
.then((result) => {
logJSON(result);
return res.send({
Project: result,
});
});
});
它有效,但我认为它有点像回调地狱。
那么,有没有更好的方法来链接这个承诺?
此外,这种在关联模型中添加/更新行的方式会产生大量查询。有没有更好的方法来完成这项任务?
【问题讨论】:
标签: javascript node.js express promise sequelize.js