2014-06-19 57 views
1

我試圖以重定向爲發送數據:我們能否在節點與重定向發送數據

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

,但我喜歡的結果:

undefined redirect to home 

如果有人遇到這個問題,請大家幫忙。

使用框架locomotive

+0

你用什麼框架? –

+1

如果您使用Express,則可以使用中間件[express-flash](https://www.npmjs.org/package/express-flash)。 –

+0

@AlexeyTen我使用機車框架 – user3680001

回答

3

是的,你可以使用express-flash

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

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

您數據acessile在res.locals.messages所以你只是在messages變種的觀點。

快速閃光燈基於連接閃光燈。它使用會話來傳輸消息。

如果您使用的機車

機車建立在快速,保存功能和簡單你來自節點的期望。

這樣:

module.exports = function() { 

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

這個答案不夠好,我們如何在主要重定向中附加數據?如原始問題 - .redirect(「/ home」,{message:'hello'});他正在嘗試附加數據「消息」。我們如何將這些數據發送到app.get(/ redirect,function {});方法??? –

0

可以,但不需要,使用快速閃存模塊閃存消息。快速會話模塊公開的req.session和res.locals對象爲編寫您自己的Flash中間件提供了一個途徑,可以更準確地滿足您的需求。這個改編自Ethan Brown的書,Web Development with Node & Express。

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 }); 

見我要點如下有關Flash的消息更多細節快遞4.

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