我们可以在节点中使用重定向发送数据吗?

时间:2014-06-19 09:10:26

标签: node.js

我正在尝试使用重定向发送数据:

this.redirect("/home",{message:'hello'});

但我的结果如下:

undefined redirect to home

如果有人遇到此问题,请提供帮助。

使用框架locomotive

2 个答案:

答案 0 :(得分:3)

是的,您可以使用express-flash

app.use(flash());
...

app.get('/redirect', function (req, res) {
  req.flash('info', 'Flash Message Added');
  res.redirect('/');
});

您的数据在res.locals.messages中非常适用,因此您的观点仅在messages var中。

express flash基于连接闪存。它使用会话来传输消息。

如果您正在使用机车

  

机车以Express为基础,保留了您对Node所期望的功能和简单性。

这样:

module.exports = function() {

  ...
  this.use(express.bodyParser());
  this.use(express.session({ secret: 'keyboard cat' }));
  this.use(flash());
  ...
}

答案 1 :(得分:0)

您可以(但不需要)使用express-flash模块进行闪存消息传递。快速会话模块公开的req.session和res.locals对象提供了编写自己的闪存中间件的途径,以更精确地满足您的需求。这个改编自Ethan Brown的书,Web Development with Node&表达

app.use(function(req, res, next){
  // if there's a flash message in the session request, make it available in the response
  res.locals.flash = req.session.flash;
  // then delete it
  delete req.session.flash;
  next();
});

在重定向到目标路线之前,使用req.session.flash设置flash消息。

req.session.sessionFlash = {
  type: 'success',
  message: 'This is a flash message using custom middleware and express-session.'
}

使用目标路由的res.render方法中的res.locals.flash检索flash消息。

res.render('index', { flash: res.locals.flash });

有关Express 4中Flash消息的详细信息,请参阅下面的我的要点。

https://gist.github.com/brianmacarthur/a4e3e0093d368aa8e423