#javascript #node.js #routes #controller
Вопрос:
Я не знаю, можно ли использовать «res.render» дважды. Ошибка в том, что:
C:ReactVapvapintosrccontrollerLaunchController.js:45
return res.render('index', { launch })
^
TypeError: Cannot read property 'render' of undefined
Маршрутизатор у меня есть это:
routes.get('/index', (req, res) => {
if (req.isAuthenticated()) {
// console.log(req.user)
res.render('index', LaunchController.index, {user:req.user});
} else {
res.render('login', {
title: 'Home',
user: req.user,
message: res.locals.message,
});
}
}
)
в контроллере у меня есть это:
async index(req,res) {
const lancamentos = await Launch.get()
let saldoAnterior = 0;
let launch = lancamentos.map((item) => {
// Intl.NumberFormat('pt-br', {style: 'currency', currency: 'BRL'}).format(money)
// .toLocaleString('pt-br',{style: 'currency', currency: 'BRL'})
// .toFixed(2).replace('.', ',')
const dataFormatada = LaunchUtils.dataFormatada(item)
const receita = LaunchUtils.receita(item)
const despesa = LaunchUtils.despesa(item)
const saldoAtual = receita - despesa
const saldo = saldoAnterior saldoAtual;
saldoAnterior = saldo;
return{
...item,
dataFormatada,
receita,
despesa,
saldo
}
})
const month = '';
if(month > 0) {
launch = launch.filter(item => {
const month = req.query.month;
const data = new Date(item.data);
const dataString = (data.getFullYear() "-" ((data.getMonth() 1)) "-" (data.getDate() ))
return LaunchUtils.formatDate(dataString).getMonth() == month
})
}
return res.render('index', { launch })
}
Ответ №1:
Вы могли бы выполнить визуализацию в общем файле
Пример:
module.exports = {
renderApp(res, config){
const defaults = {
let a = 10,
...config
};
return res.render('index', defaults) // index path should've been set (app.set(....))
}
}
Везде, где вы хотите использовать рендеринг, импортируйте его и используйте с соответствующими настройками
Комментарии:
1. Но где я должен назвать эти коды? в маршрутах или контроллерах? Моя идея заключается в том, что после подтверждения пользователя представление «индекс» будет отображаться с конфигурацией контроллера.
2. Из вашего кода выше я понимаю, что вы хотите отобразить индекс с некоторой конфигурацией, когда будет выбран маршрут «/index», и то же самое будет отображаться с данными конфигурации запуска в контроллере? Вы могли бы сделать что-то вроде app.use(‘/’, маршруты), которое приведет вас к маршрутам. js, где вы могли бы выполнить рендеринг с соответствующей конфигурацией для разных сценариев.