2015-04-01 14 views
0

這裏有兩個簡單的場景:使用控制器的方法,既端點和中間件

  1. 獲取userid並返回
  2. 獲取userid,做一些其他的東西,然後返回

我想實現場景2

router.post('/api/users/:id/someStuff', controller.getUser, controller.doStuff) 

但情況1應該被實現爲

router.post('/api/users/:id/someStuff', controller.getUser) 

基本上,controller.getUser既是中間件和端點。我該如何做到這一點?如果我在getUser之內使用res.son(),稍後在doStuff之內重新使用它,則出現錯誤。

回答

0

我會實現這個作爲app.param處理程序:userId並命名我的參數(在快速文檔中有一個這樣的例子)。然後,對於方案1,路由處理程序只會執行res.json(req.user);,並且方案2會預加載req.user,以便在發送用戶之前執行其他任何需要執行的操作。如果「發送用戶」實際上只是res.json(req.user),那麼它就沒有足夠大的空間來分解它自己的中間件,但如果它最終成長爲一段代碼,則可以將它分解爲中間件或輔助函數。