2015-04-12 26 views
0

我很困惑的一個用法:表達的NodeJS請求中的配置文件屬性

在路由文件:

app.param('userId', users.load); 

而且users.load功能:

exports.load = function (req, res, next, id) { 
    var options = { 
     criteria: { _id : id } 
    }; 
    User.load(options, function (err, user) { 
     if (err) return next(err); 
     if (!user) return next(new Error('Failed to load User ' + id)); 
     req.profile = user; 
     next(); 
    }); 
}; 

這裏,路線應該有userId迴應,但爲什麼作者在這裏使用req.profileprofile不是一個屬性。

任何人都可以幫助嗎?

謝謝。

回答

1

什麼代碼確實是這樣的:對於具有userId參數的路線(即路線,看起來類似於這樣:/user/:userId),快速將調用load()功能該路由處理程序被調用。

加載函數從數據庫加載屬於userId的用戶配置文件,並將其作爲新創建的屬性req.profile添加到req

.profile屬性名稱任意由作者命名,並說明了事實,這是完全有效的屬性添加到req(或res,對於這個問題,但慣例是將這些屬性添加到req)。

在路由處理程序中,可以使用req.profile。它基本上是一種將數據從中間件和實現傳播到路由處理的其他部分的方式。