#javascript #node.js #session #ejs
Вопрос:
нужна помощь. Мои местные жители…. не работают в представлениях. В app.js я получаю истинное, но в представлениях я получаю неопределенное. Есть идеи, как решить мою проблему?!
это мой фрагмент кода из app.js
app.use(async function(req, res, next) { const user = req.session.user; const isAuth = req.session.isAuthenticated; if (!user || !isAuth) { return next(); } const userDoc = await User.findOne({_id: user.id}); const isAdmin = userDoc.isAdmin; res.locals.isAuth = isAuth; console.log(res.locals.isAuth); res.locals.isAdmin = isAdmin; next(); }); app.use('/users', userRoutes); app.use('/', coinRoutes); app.use('/', marketRoutes); app.use('/', footerRoutes); app.use('/', holdingRoutes);
это мой фрагмент кода из navbar.ejs
lt;nav class="mdl-navigation mdl-layout--large-screen-only"gt; lt;a class="mdl-navigation__link" href="/"gt;Top 250lt;/agt; lt;a class="mdl-navigation__link" href="/topflop"gt;Top/Flop Coinslt;/agt; lt;a class="mdl-navigation__link" href="/top"gt;Top gesuchte Coinslt;/agt; lt;a class="mdl-navigation__link" href="/markets"gt;Börsenlt;/agt; lt;a class="mdl-navigation__link" href="/holdings" gt;BTC-Unternehmenlt;/a gt; lt;a class="mdl-navigation__link" href="/info"gt;Newslt;/agt; lt;% if(locals.isAdmin) { %gt; lt;a id='admin' class="mdl-navigation__link log" href="/users/admin"gt;Adminlt;/agt; lt;% } %gt; lt;% if (!locals.isAuth) { %gt; lt;% console.log(locals.isAuth 'Hello') %gt; lt;a id='sign' class="mdl-navigation__link" href="/users/signup"gt;Signuplt;/agt; lt;a id='login' class="mdl-navigation__link" href="/users/login"gt;Loginlt;/agt; lt;% } else { %gt; lt;form id="logout-form" action="/users/logout" method="post"gt; lt;button id="logout" type="submit"gt;Logoutlt;/buttongt; lt;/formgt; lt;% } %gt; lt;/navgt;
Ответ №1:
в представлении вам нужно вызвать его напрямую вот так
lt;% if ( !isAdmin) { %gt; ... lt;% } %gt; lt;% if ( !isAuth) { %gt; ... lt;% } %gt;
Комментарии:
1. Спасибо, что ответили. Я попытался, но затем я получаю сообщение об ошибке «isAdmin не определен………»
2. убедитесь,что промежуточное программное обеспечение,использующее app.use(функция (req, res, next) {}), установлено перед app.use («/пользователи», маршруты пользователей); также оно не входит в оператор if