如果我的mvc项目中有一个视图,其中包含数据库中许多表的数据,那么最好的方法是在不进入厄运嵌套树的情况下获取它们
Model1.findAll().then(model1Data => {
Model2.findAll().then(model2Data => {
Model3.findAll().then(model3Data => {
Modeln.findAll().then(modelnData => {
res.render('view', {
model1Data: model1Data,
model2Data: model2Data,
model3Data: model3Data,
modelnData: modelnData
});
})
})
})
})
注意:以上查询没有where子句,联接或任何其他条件
答案 0 :(得分:2)
在这里您可以使用Promise.all()
或async/await
两种方式:
Promise.all():
const promises = [
Model1.findAll(),
Model2.findAll(),
Model3.findAll(),
Modeln.findAll()
]
Promise.all(promises).then((data) => {
res.render('view', data );
});
异步/等待:
let model1Data = await Model1.findAll();
let model2Data = await Model2.findAll();
let model3Data = await Model3.findAll();
let modelnData = await Modeln.findAll();
res.render('view', {
model1Data: model1Data,
model2Data: model2Data,
model3Data: model3Data,
modelnData: modelnData
});
注意:
如果查询不相关,我建议使用Promise.all() 彼此之间,因为它将开始执行,而不必等待 第一个要完成,就像在异步/等待中一样。
更多详情: DO READ