Я пытаюсь передать несколько данных в одно представление. Я могу отправлять туда продукты, но я хотел бы также отправлять категории. Я хочу отправлять их отдельно, а не с объединением. Мне посоветовали поставить его после «тогда», но я не знаю, как это сделать.

router.get('/', function (req, res) {
  models.produit.findAll(
    {
      include: 
      [
        {
          model: models.image, as: "images" 
        },
        {
          model: models.promotionproduit, as: "promotionproduits",
          include:[{model: models.promotion, as: "Promotion"}]
        }
      ]})
      .then(data => {
        res.render('home', {
          data: data
        });
      
    }).catch(err => console.log(err));
});
0
H3rcul3 13 Дек 2021 в 01:51
Вы можете делать многочисленные запросы данных перед рендерингом. Нужно ли объединять категории с продуктами или наоборот? На самом деле недостаточно известно о соотношениях отображения, которые вы ищете.
 – 
charlietfl
13 Дек 2021 в 01:55
Что такое категории и как к ним получить доступ?
 – 
maazadeeb
13 Дек 2021 в 01:55
Что я хочу сделать, так это получить свои продукты с данными и сделать другой запрос, который вернет, например, категории с данными2, и, на мой взгляд, я мог бы сделать следующее: <% data.forEach (function (product) {%>. .. <% data.forEach (функция (категория) {%>
 – 
H3rcul3
13 Дек 2021 в 02:00

1 ответ

Лучший ответ

Конечно, используйте async / await для создания данных, а затем передайте их представлению.

router.get('/', async(req, res) => {

  // define your data var
  const data = {
    errors: {}
    produits: [],
    categories: []
  }

  // get produits
  try {
    data.produits = await models.produit.findAll({
      include: [{
          model: models.image,
          as: "images"
        },
        {
          model: models.promotionproduit,
          as: "promotionproduits",
          include: [{
            model: models.promotion,
            as: "Promotion"
          }]
        }
      ]
    })
  } catch {
    data.errors.produits = 'Échec du chargement des produits.'
  }

  // get categories
  try {
    // as above, do your model...
  } catch {
    data.errors.categories = 'Échec du chargement des catégories.'
  }

  res.render('home', {
    data
  });
});
0
Lawrence Cherone 13 Дек 2021 в 01:59
Я новичок в этом языке, поэтому спасибо за ваш ответ, вы мне очень помогаете.
 – 
H3rcul3
13 Дек 2021 в 02:03
Np, на ваш взгляд, просто обращайтесь через data.categories, который будет массивом, который вы можете использовать forEach, если вы проверите data.errors.categories, вы можете показать ошибку и т. д. Если вы хотите, чтобы она была на один уровень выше, т.е. categories.forEach просто сделай res.render('home', data);, удачи
 – 
Lawrence Cherone
13 Дек 2021 в 02:06
Идеально подходит для чаевых
 – 
H3rcul3
13 Дек 2021 в 02:09