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, время: 12:22. |