給定一個nodejs,mongoose,mongodb,expressjs設置,我們具有驗證特定請求的權限/安全相關路由。例如:在快遞中間件中重複使用貓鼬對象的模式
permissionUtils.checkStudentWritePermissions = function(req, res, next){
//load this student from the mongoose db
//ensure the current user has permission to update this student
}
server.put("/api/student/:studentId/enroll",
permissionUtils.checkStudentWritePermissions, function(req, res, next){
//load student from the database, validate the changes
//update student in mongodb, send new version back to user
});
中間件很有用,因爲我們確保當前用戶有權在每種情況下更新學生。 (代碼重用等)你會注意到,在這兩個例子中,我正在從MongoDB中加載學生。有沒有一種可以接受的模式來避免這種雙重加載?某種請求循環緩存或傳遞模型的流暢方式?
我通常從中間件向res.locals添加內容。像'res.locals.student = user;'那麼你的最終函數可以在res.locals中查找 - 這也會將它暴露給response/template對象。 – chovy 2013-03-13 00:12:41