如果有一个与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,那么:
-
设置渲染引擎
express.set('view engine', 'ejs');
-
准备你的数据模板如。
let isLoggedIn = [eval your value here]
-
在post('/')path的内部,在块的结尾之前,渲染你的模板并传递所需的数据
res.render('pages/index', { isLoggedIn: isLoggedIn });
-
在你的模板中添加一个如果在适当的地方
<%if (!isLoggedIn) { %> (...render button) <% } %>
这里有一个很好的教程 ,可以帮助您理解如何将数据从模型传递到视图