Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.06.2016, 14:58
Аспирант
Отправить личное сообщение для smegol Посмотреть профиль Найти все сообщения от smegol
 
Регистрация: 28.05.2015
Сообщений: 40

Express - одновременный рендеринг нескольких шаблонов
Добрый день!

Пытаюсь сделать несколько render одновременно.

1-й - должен выводить все разделы сайта на любом URL
2-й - должен выводить всех пользователей в 1-м разделе сайта

Но срабатывает только тот который стоит первым.

Подскажите пожалуйста как это можно сделать.

// 1-й
    app.use(function(req, res, next) {
     // Запрос в БД
      section.get.all(function(err, allSection) {
        // Отправка данных на страницу
        res.render('index', {
          allSection: allSection
        });
      });
    });

    // 2-й
    app.get('/section/1', function(req, res, next) {
      user.get.all(function(err, allUser) {
        res.render('index', {
          allUser: allUser
        });
      });
    });
Ответить с цитированием
  #2 (permalink)  
Старый 12.06.2016, 15:25
Аватар для Botik21
Аспирант
Отправить личное сообщение для Botik21 Посмотреть профиль Найти все сообщения от Botik21
 
Регистрация: 01.06.2016
Сообщений: 87

Вообще так делать нельзя и в вашем случае подтягивать рендер всех разделов сайта должен шаблонизатор.
Но для передачи управления дальше Експрессу используйте вызов next(), идущую третьим параметром.
Ответить с цитированием
  #3 (permalink)  
Старый 12.06.2016, 16:04
Аспирант
Отправить личное сообщение для smegol Посмотреть профиль Найти все сообщения от smegol
 
Регистрация: 28.05.2015
Сообщений: 40

Сообщение от Botik21
подтягивать рендер всех разделов сайта должен шаблонизатор
До этого момента я думал что всё запросы и редер делаются в роутере.
А можно пример и где об этом почитать?
Ответить с цитированием
  #4 (permalink)  
Старый 12.06.2016, 16:15
Аватар для Botik21
Аспирант
Отправить личное сообщение для Botik21 Посмотреть профиль Найти все сообщения от Botik21
 
Регистрация: 01.06.2016
Сообщений: 87

Да в роутере, но запрос на рендер как правило один и рендерит он целиком всю страницу.
Ответить с цитированием
  #5 (permalink)  
Старый 12.06.2016, 17:16
Аспирант
Отправить личное сообщение для smegol Посмотреть профиль Найти все сообщения от smegol
 
Регистрация: 28.05.2015
Сообщений: 40

Сообщение от Botik21 Посмотреть сообщение
Да в роутере, но запрос на рендер как правило один и рендерит он целиком всю страницу.
Не могу понять это нужно без app.use? Тогда откуда res взять?
Я находил вариант, там 2 шаблона так реддырили:
(у меня не работает)


// 1-й
    app.use(function(req, res, next) {
      section.get.all(function(err, allSection) {
        res.render('index', {
          allSection: allSection
       // 2-й
        }, function(err, data) {
          app.get('/section/1', function(req, res, next) {
           user.get.all(function(err, allSection) {
            res.render('index', {
              user: user
            });
           }
          });
        });
      });
    });
Ответить с цитированием
  #6 (permalink)  
Старый 12.06.2016, 20:01
Аспирант
Отправить личное сообщение для smegol Посмотреть профиль Найти все сообщения от smegol
 
Регистрация: 28.05.2015
Сообщений: 40

Мудры слова твои!
Пожалуйста, дай Смеглу еще подсказчику или кусочек кода
Ответить с цитированием
  #7 (permalink)  
Старый 14.06.2016, 16:21
Аспирант
Отправить личное сообщение для smegol Посмотреть профиль Найти все сообщения от smegol
 
Регистрация: 28.05.2015
Сообщений: 40

А решение оказалось таким:

app.use(function(req, res, next) {
 // Запрос в БД
  section.get.all(function(err, allSection) {
    req.allSection = allSection; 
    next():
  });
});
 
// 2-й
app.use('/user', function(req, res, next) {
  user.get.all(function(err, allUser) {
    res.render('index', {
      allUser: allUser, 
      allSection: req.allSection
    });
  });
});


1 = middleware
2 = request /user
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск