可以說我正在使用Express來構建一個簡單的API來POST和GET客戶對象。處理來自多個來源的響應錯誤
(請忽略語法,或任何表達特異性這僅僅是寫在SublimeText解釋我的問題自由形式。)
在我的路線,我認爲這種看起來像這樣的方法:
// Main Express index.js server file.
function getCustomer(req, res, next) {
var q = request.query;
Customer.findByCustomerId(q.customerId, function(error, customer) {
if (error) { // No idea if this is a Mongo Error, NotFound Error, InactiveError, something else from some other part of the app!
res.send("??????");
return next();
}
res.send(201, customer.JSONResponse());
return next();
});
}
// Customer.js Mongoose Model in separate file.
Customer.statics.findByCustomerId = function(customerId, callback) {
this.findOne({customerId : customerId}, function(error, foundCustomer) {
if (error) { // MONGO ERROR, Something is really broken.
return callback(error, null);
}
if (!foundCustomer) { // Didn't find a customer so lets send that back.
return callback(new Error("No customer found"), null);
}
if (foundCustomer.status == "inactive") { // Lets just say a customer being inactive is error worthy.
return callback(new Error("The customer you have specified is inactive"), null);
}
return callback(null, foundCustomer);
});
};
幾件事情可能發生在這裏:
有效的客戶存在,並與空返回錯誤。
MongoDB有一個錯誤,並將它發送給null客戶的回調。
我定製的客戶通過取景器ID方法有一個錯誤:
一個。沒有找到客戶。
b。客戶被發現但不活躍。
如何處理用正確的錯誤發送響應? (如果沒有一個開關或者混亂。)
如果它是一個蒙戈的錯誤,我想送一個通用的500
如果沒有找到客戶,我想送一個404友好的信息。
如果找到客戶但未激活,我想發送其他錯誤響應。
是否有一個一般的指導方針或最佳做法爲這個sitauation?
預先感謝您!
我還沒有測試這個。回覆晚了非常抱歉。當我有一些東西被整理出來時,會回覆。你的答案可能是這樣,但我很猶豫是否關閉這個話題,因爲如果沒有問題,我可能會跟進問題。 – Andrew 2014-09-30 10:53:33