新人一枚,在做Express+nodejs博客时 涉及状态栏转换。代码如下:
header.ejs++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
HOME ** <% if(user){ %>** //===========>第一个问题:无法实现切换状态栏 LOGOUT POST **<% } else { %>** LOGIN REGISTER **<% } %>** **<% if(success){ %>index.js(路由文件)+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++只贴部分。
router.get('/', function (req, res) {
res.render('index', {
title:'主页',
** user: req.session.user,
success: req.flash('success').toString(),
error: req.flash('error').toString()**
});
});
router.get('/reg', function (req, res) {
res.render('reg', {
title: '注册',
user: req.session.user,
success: req.flash('success').toString(),
error: req.flash('error').toString()
});
});
router.post('/reg', function (req, res) {
var name = req.body.name;
var password = req.body.password;
var email = req.body.email;
var password_re = req.body['password-repeat'];
if (password != password_re) {
req.flash('error', '两次输出不一样!!');
return res.redirect('/reg');
}
//生成密码 m5 zhi
const md5 = crypto.createHash('md5');
var password = md5.update(req.body.password).digest('hex');
var newUser = new User({
name: req.body.name,
password: password,
email: req.body.email
});
console.log(newUser);
User.get(newUser.name, function (err, user) {
if (err) {
req.flash('error', '打开失败');
returnres.redirect('/');
}
if (user) {
req.flash('error', '已存在');
return res.redirect('/reg');
}
newUser.save(function (err, user) {
if (err) {
req.flash('error', err);
return res.redirect('/reg');
}
req.session.user = user;
console.log(req.session.user);
req.flash('success', '注册成功!!');
res.redirect('/');
});
});
});
router.get('/login', function (req, res) {//==========>第二个问题:经过添加“状态栏切换功能”
//==========>登陆页乱码:
//==========>esc is not a function
//==========>TypeError: E:\blog\views\login.ejs:1
//==========>>> 1| <%- include header %>
//==========> 2|
res.render('login', { title: '登录' }); }); router.post('/login', function (req, res) { var md5=crypto.createHash('md5'), password=md5.update(req.body.password).digest('hex'); //检查用户是否存在 User.get(req.body.name,function(err,user){ if(!user){ req.flash('error','!'); return res.redirect('login'); //用户不存在 } if (user.password!=password){ req.flash('error','!!'); return res.redirect('/login'); //密码不一样 } //用户信息存入session req.session.user=user;
//=======>(仍旧是第一个问题)这个无法实现赋值,user跑出来为undefined。 req.flash('success','!'); res.redirect('/');// }); }); router.get('/post', function (req, res) { res.render('post', { title: '发表' }); }); router.post('/post', function (req, res) { }); router.get('/logout', function (req, res) { req.session.user=null; req.flash('success','!!'); res.redirect('/'); }); module.exports = router;
app.js+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ var index = require('./routes/index'); app.use(session({ resave:false, saveUninitialized: true, secret: settings.cookieSecret, key: settings.db,//cookie name cookie: { maxAge: 1000 * 60 * 60 * 24 * 30 },//30days store: new MongoStore({ url: 'mongodb://localhost/db' }) })); app.use(flash());
粗体为后添加“状态栏切换功能”code