我现在开始使用Express,并希望显示一条简单的flash错误消息,这只是无法正常工作.
app.js
var flash = require('connect-flash'); ... var app = express(); // create an express app // configure environments app.configure(function(){ ... app.use(express.cookieParser('keyboard cat')); app.use(express.session({ cookie: { maxAge: 60000 }})); app.use(flash()); app.use(app.router); }); app.get('/signup', routes.signup); app.post('/signup', routes.adduser); ...
和我的 router.js
exports.signup = function(req, res) { console.log(req.flash('error')); res.render('signup', {message: req.flash('error')}); }
和
exports.adduser = function(req, res) { // get the form values from "name" attribute var username = req.body.username; var email = req.body.useremail; var password = req.body.userpassword; User.findOne({'username': username}, function(err, user) { if (user) { console.log('user exists'); req.flash('error', 'Username exists'); res.redirect('/signup'); } else { ... ...
现在,我想要的是,如果用户存在,重定向回signup
闪烁错误/信息/任何消息.
我的玉模板signup.jade
是
extends ../layouts/default block content h1 Sign Up if message && message.length strong #{message} form#formAddUser(name="adduser", method="post", action="/signup") input#inputUserName(type="text", placeholder="username", name="username") input#inputPassword(type="password", placeholder="password", name="userpassword") input#inputUserEmail(type="text", placeholder="email", name="useremail") button#btnSubmit(type="submit") Sign Up
这不会显示任何错误.我也试过for
看,索引访问等但没有任何作用.我究竟做错了什么?我该如何解决?
只需删除该行:
console.log(req.flash('error'));
req.flash(name)表示获取并删除 flash.因此,如果您两次调用req.flash,则第二次调用将返回空数组.
您也可以这样做:
exports.signup = function(req, res) { var error = req.flash('error'); console.log(error); res.render('signup', {message: error}); }