【发布时间】:2018-03-22 06:51:42
【问题描述】:
我目前正在使用带有 Sequelize (MySQL) 的 Node.js,并且有两个模型之间存在关联:M.belongsTo(C)。我要做的是查询所有 C 并将所有属于 C 的 M 添加到返回的 JSON 对象中。请参阅下面代表我最近尝试的代码:
C.findAll({
where: {
parent_ids: ids
}
}).then(cs => {
let fCs = [];
for (let j = 0; j < cs.length; j++) {
let c = cs[j].get({ plain: true });
M.findAll({
where: {
CId: c._id
}
}).then(ms => {
let cMs = [];
for (let k = 0; k < ms.length; k++) {
cMs.push(ms[k].get({ plain: true }));
}
c.ms = cMs;
});
fCs.push(c);
}
return res.json({
success: true,
cs: fCs
});
}).catch(error => {
return res.json({
success: false
});
});
问题是M 模型上的内部查询是作为异步查询进行的,我在执行任何查询之前得到响应。我也尝试使用Promise.all(),但我无法使其正常工作,因为我在外部C 查询中进行迭代。
我怎样才能让它按预期工作?
【问题讨论】:
标签: mysql node.js sequelize.js