2013-03-12 46 views
4

我知道我把它包裝在一個大的if else語句中,因爲我有多個res.render函數。如何在express.js中退出路線?

我怎麼可以做這樣的事情,這應該防止路線的其餘部分將被執行:

if(req.params.url === undefined){ 
    res.render('layout'); 
    return; 
} 

OR:

if(req.params.url === undefined){ 
    res.render('layout'); 
    next(); 
} 

但兩者的執行代碼的其餘部分在他們下面,這導致標題已經發送。

現在我的代碼如下所示:

exports.activate = function(req, res){ 
    var hash = req.params.hash; 

    if(hash === undefined){ 
     res.render('activation'); 
     next(); 
    } else { 
      // Do stuff with hash 
      res.render('activateOne', {hash: hash}); 
    } 

} 

回答

3

我不是100%肯定這一點,但如果你只是想你res.render後退出()的函數,我認爲你可以使用return。這應該可以防止執行當前功能的其餘部分。

一個簡單的Ajax例子(我知道它的客戶端,但它的異步功能和行爲應該類似):

$.ajax({ 
    url: 'www.google.com', 
    type: 'POST', 
    error: function() { 
     console.log('failure'); 
     return 0; 
     console.log('after return'); 
    } 
}) 

如果你試圖在你的瀏覽器控制檯執行此,你會注意到「失敗'日誌,但它會在'返回'消息之前停止。

+0

是的,沒錯。你可以使用回報,其他的東西讓我感到困惑。謝謝你的回答! :) – 2013-03-12 21:44:16

+0

是的,它的工作原理,但如果我想在響應中發送一條消息,例如response.json({message:'user has been created'});我不能在這種情況下使用返回。 – 2017-02-26 03:05:49