[英]Mongodb Error codes and corresponding http status code
因此,如果新用戶嘗試使用已存在的用戶帳戶進行注冊,MongoDb 會返回11000 錯誤代碼
在 Express 中,可以這樣處理:
async function signup(req, res, next){
try{
// some stuff
}catch(err){
if (err.code === 11000) {
err.message = 'Email is already taken.';
res.statusCode = 409;
}
return next(err);
}
}
對於此示例,我決定使用 409 http 狀態碼進行響應。
但是,我不確定這是否是處理來自 MongoDB 的幾個不同代碼並為每個代碼分配 http 狀態的好方法。
我還缺少哪些其他解決方案?
您可以針對可能遇到的常見錯誤返回特定響應。
但這真的取決於你想變得多么具體。 您還需要考慮為可能發生的每個錯誤自定義響應是否真的值得。 根據您的配置,其中一些可能永遠不會發生。
例如,如果您不使用分片集群, ncompatibleShardingConfigVersion
將永遠不會發生。
此外,如果錯誤消息應該顯示在前端,用戶並不真正關心錯誤的內容、原因和方式。 他/她知道的是它不起作用並且他/她不開心。
你有幾個選擇:
使用像你現在正在做的那樣的條件。 也許創建一個自定義錯誤構造函數並將條件放入其中以避免在每個 function 調用中重復自己。
向前端發送一條狀態碼為 500 的通用錯誤消息。在后端記錄整個錯誤 object,以便您知道出了什么問題。 你是真正關心錯誤的原因、內容、方式、時間的人。
就個人而言,我將 go 與選項 2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.