0
我正在使用Express 3中的新消息系统,并在处理和验证表单时发现了这个问题。提交无效表单时,提交失败,但没有显示错误消息。当再次提交时,会显示上次请求的错误消息。我尝试使用本地会话和Redis会话,它总是一样的。这是默认快递项目:Express 3会话总是一个请求后面
app.js
var express = require('express')
, routes = require('./routes')
, http = require('http')
, path = require('path');
var app = express();
app.response.message = function(type, msg){
// reference `req.session` via the `this.req` reference
var sess = this.req.session;
// simply add the msg to an array for later
sess.messages = sess.messages || [];
sess.messages.push({type: type, msg: msg});
return this;
};
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(express.static(path.join(__dirname, 'public')));
app.use(function(req, res, next) {
console.log('req.session', req.session.messages);
var msgs = req.session.messages || [];
res.locals({
messages: msgs,
hasMessages: !! msgs.length
});
req.session.messages = [];
next();
});
});
app.configure('development', function(){
app.use(express.errorHandler());
});
app.get('*', function(req, res, next) {
res.message('hello', req.url);
next();
});
app.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
app.get('/hello', function(req, res) {
res.render('index', { title: 'Express' });
});
app.get('/world', function(req, res) {
res.render('index', { title: 'Express' });
});
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
指数身体此外:
<% if (hasMessages) { %>
<ul id="messages">
<% messages.forEach(function(msg){ %>
<li class="<%= msg.type %>"><%= msg.msg %></li>
<% }) %>
</ul>
<% } %>
- /没有消息
- /你好显示 '/'
- /世界显示'/你好'
- reload显示'/ world'
这里有什么问题?
因此总之,没有问题:p您可能只是期待着不同的结果,在这种情况下,您根本不需要使用会话 – 2012-08-13 20:24:52
True 。没想到这一点。但消息应该像闪光消息一样工作,不是吗?使用像passport.js这样的图书馆时遇到困难,我猜? – Patrick 2012-08-13 20:31:08