mysql—从node.js中的许多表中获取数据的最佳方法

bprjcwpo  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(368)

如果我的(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子句、连接或任何其他条件

hmtdttj4

hmtdttj41#

在这里你可以用两种方法 Promise.all() 或者 async/await :
我保证。所有():

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(),因为它将开始执行,而不是像在async/await中那样等待第一个查询完成。
更多细节:阅读

相关问题