如果有一个与Node.js / Express的活动用户会话,如何更改HTML内容?

我想在用户login后删除login/注册button,但我似乎无法想象如何。 这是我想改变的头文件的一部分。

<section class="header"> <div class="wrapper"> <nav class="navigation"> <ul> <li><a href="/">Images</a></li> <li><a href="/albums">Albums</a></li> <li><a href="/tags">Tags</a></li> <li><a href="/upload">Upload</a></li> </ul> <button class="logIn">Log In</button> <button class="signUp">Sign Up</button> </nav> </div> 

这是我的login路线,它将req.session.user_id设置为用户的ID。

 var express = require('express'); var router = express.Router(); var db = require('../helpers/db'); var Password = require("node-php-password"); router.post('/', function(req, res, next) { var username = req.body.username; var password = req.body.password; db.query('SELECT * FROM user WHERE username = ?', [username], function (error, results, fields) { if (error) throw error; var userId = results[0].id; var hash = results[0].password; if(Password.verify(password, hash)){ req.session.user_id = userId; res.redirect('/'); } }); }); module.exports = router; 

我认为必须做的是通过req.session.user_id到头文件,但我不知道如何。 我使用EJS作为模板引擎。

如果您使用EJS,那么:

  1. 设置渲染引擎

     express.set('view engine', 'ejs'); 
  2. 准备你的数据模板如。

     let isLoggedIn = [eval your value here] 
  3. 在post('/')path的内部,在块的结尾之前,渲染你的模板并传递所需的数据

     res.render('pages/index', { isLoggedIn: isLoggedIn }); 
  4. 在你的模板中添加一个如果在适当的地方

     <%if (!isLoggedIn) { %> (...render button) <% } %> 

这里有一个很好的教程 ,可以帮助您理解如何将数据从模型传递到视图