2016-08-22 102 views
0

HEJ,節點自定義錯誤處理程序中間件優化?

我工作的一個的NodeJS平臺,暴露出REST API內的推動者。
我需要實現一些自定義錯誤處理程序,它們將實現一些業務邏輯。

基本上,我必須處理POST請求,其內容編碼爲application/json
我期望收到一個對象的列表代表服務在一個數組中。陣列的
每個項目是一個對象,其確實具有以下結構

{ 
    "code": "sampleCode", 
    "id": "someId", 
    "status: "someStatus" 
} 

在業務邏輯的術語,每個服務屬於一個家庭。並且每個家庭都有一些配置存儲在屬性文件中。

一旦我收到請求,我需要檢查主體內容並應用一些會導致自定義錯誤的自定義規則。

規則是:

  • "code值不能爲空。
  • "code"值必須是在屬性
  • "code"如果代碼值屬於家族FOO或欄ID定義的列表不能爲空

我使用lodash做試驗實施了一些小單元的功能在收藏。

我主要的問題是,我需要去那些過程的異步嗎?現在我只是調用它的功能。由於我對nodeJs非常陌生,特別是在企業環境中的最佳實踐方面,我希望得到更多有經驗的用戶的意見?

執行業務邏輯的自定義錯誤處理程序應該是異步還是沒有好處?

+0

通常情況下,這是一個好主意,在node.js中完全異步如果需要,最好不得不「重新同步」,而不是阻止事件循環的風險。 – DrakaSAN

回答

0

Nodejs基本上是異步的,所以一般來說,你不會做同步的東西。

如果使用expressjs或類似的,你應該請求之前創造出一種「過濾器」的,是這樣的:

function validator(req, res, next){ 
    //my validation code 
    next(); 
} 

app.get('/my/endpoint', validator, function (req, res) { 
    req.send(); 
}); 
+0

我明白了,看起來公平,在我的使用案例中實現起來有點複雜,因爲應用程序是大型生態系統的一部分。它確實使用express,但在引擎蓋下作爲從swagger yaml文件生成的路由。我認爲我需要深入分析這些模塊,以便真正理解正在發生的事情並使用正確的處理程序 – anchnk

+1

express基於中間件的概念http://expressjs.com/zh/guide/using-middleware.html#middleware 。如果您可以訪問路線,請指定路線,您可能只需要添加額外的功能,然後撥打電話即可。肯定會更深入,因爲它似乎是一種自定義配置。 –