Лучший способ получить данные из многих таблиц в node.js - PullRequest
0 голосов
/ 19 декабря 2018

Если у меня есть представление в моем (проект 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, объединений или любых других условий

1 Ответ

0 голосов
/ 19 декабря 2018

Здесь вы можете использовать 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 );
});

Async /await:

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.

Для более подробной информации: DO READ

...