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 }); }); }); |
Вообще так делать нельзя и в вашем случае подтягивать рендер всех разделов сайта должен шаблонизатор.
Но для передачи управления дальше Експрессу используйте вызов next(), идущую третьим параметром. |
Цитата:
А можно пример и где об этом почитать?:) |
Да в роутере, но запрос на рендер как правило один и рендерит он целиком всю страницу.
|
Цитата:
Я находил вариант, там 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 }); } }); }); }); }); |
Мудры слова твои!
Пожалуйста, дай Смеглу еще подсказчику или кусочек кода :thanks: |
А решение оказалось таким:
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 |
Часовой пояс GMT +3, время: 03:57. |