EDIT: The solutions proposed in this answer are the right way to achieve this:
On a get
request in node I can do this:
app.get('/', function(req, res) {
res.render('index.ejs', {
message: 'test'
});
});
And send an object in order to set a message along with the request. How can I do the same with a redirect:
i.e. something like this:
function testSend(req, res) {
mess = {message: 'test two'};
res.redirect('/', mess);
//Won't pass to the "get"
}
Another solution would be using express sessions:
When you initialize your app:
var session = require('express-session');
app.use(session({secret: 'mySecret', resave: false, saveUninitialized: false}));
//configure the options however you need them, obviously
Your redirect function:
function testSend(req, res) {
req.session.message = 'please login first'; //or whatever
res.redirect('/');
});
And in your router:
app.get('/', function(req, res) {
var message = req.session.message;
res.render('index.ejs', {message: message});
});
This keeps your message securely on the server side, in case it contains sensitive data.
You can use session like @Jeremy, or pass data like params on URL
res.redirect('/my-url/?param1=value1¶m2=value2')
on controller
req.query.param1
req.query.param2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With