2017-04-08 701 views
3

我該怎麼辦switch語句返回基於HTTP狀態代碼的錯誤信息,我這樣做:開關HTTP狀態代碼

switch(true){ 
    case err.status.test(/^4/): // 4xx 
     res.fail(err.status, err); 
     break; 
    case err.status.test(/^5/): // 5xx 
     res.error(err.status, err.message, {data: err}); 
     break; 

是我的正則表達式這樣做對嗎?

回答

5

test()RegExp方法,所以它應該是:

case /^4/.test(err.status): 

我個人認爲switch(true) { ... }是一個令人困惑的編碼風格。我將它寫成:

switch(Math.floor(err.status/100)) { 
    case 4: 
     res.fail(err.status, err); 
     break; 
    case 5: 
     res.error(err.status, err.message, {data: err}); 
     break; 
} 
+1

我知道關鍵字'break'在你的「...」中,但我認爲可能會混淆不明確。 – Ankirama

-1

一個也可以嘗試做了錯誤的對象,其中鍵將狀態碼和值將是各自的錯誤/成功的消息。例如

errorObj = {1 : 'Informational responses', 2: 'Success', ...} 
console.log(errorObj[Math.floor(err.status/100)]) 

它在大多數時間用於較少行數的目的。