2015-11-06 88 views
0

在JavaScript/NodeJS中返回錯誤號或錯誤狀態碼的最有效方法是什麼?例如,我想在下面的代碼片斷返回401狀態碼(或錯誤代碼):如何在Node中返回HTTP錯誤狀態碼?

var login = function (params, callback) { 

    var email  = params.email || '', 
     password = params.password || ''; 

    if (!isValidEmail(email)) { 
     return callback(new Error('Email address required', 401)); 
    } 

    // Do something else 
}; 

的登錄方法,上方,將被稱爲如下:

authRouter.post('/login', function(req, res) { 
    svc.login(req.body, function (err, response) { 
     if (err) { 
      err.statusCode = err.statusCode || 401; 
      return res.status(err.statusCode).send({ message: err.message }); 
     } else { 
      return res.send(response); 
     } 
    }); 
}); 

的這裏的目標是在方法中設置err.statusCode(或類似的)並通過回調傳回。基本上,我正在尋找的這個簡寫:

var err = new Error('Email address required'); 
err.statusCode = 401; 
return callback(err); 
+0

你的意思是,發送到客戶端?你在用什麼框架? – Bergi

+0

使用節點...應該無關緊要,我只想讓錯誤對象包含數字值。 –

+1

如果這是問題,只需使用一個輔助函數StatusError(stat,msg){var err = new Error(msg); err.statusCode = stat;返回錯誤; }'那麼 – Bergi

回答

-1

在你的NodeJS應該再回到你的錯誤在你的回調的第一個參數。

myFunctionThatDoesSomethingAsync (callback) { 
    doSomethingAsync('asanas', function(){ 
    //do something 
    return callback(err,results) 
    }) 
} 

myFunctionThatDoesSomethingAsync(function (err,results) { 
    if (!err) 
    doSomethingWith(results) 
}) 

閱讀更多:http://fredkschott.com/post/2014/03/understanding-error-first-callbacks-in-node-js/

對不起,我再次看了你的問題,你應該這樣做ysing HTTP的NodeJS響應:

res.writeHead(401, {'Content-Type': 'text/plain'}); 
res.end('Email address required''); 
+1

這不是問題。我的目標是在錯誤對象上包含數值(狀態碼)。 –

相關問題