簡體   English   中英

Mongodb 錯誤代碼和對應的 http 狀態代碼

[英]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將永遠不會發生。

此外,如果錯誤消息應該顯示在前端,用戶並不真正關心錯誤的內容、原因和方式。 他/她知道的是它不起作用並且他/她不開心。

你有幾個選擇:

  1. 使用像你現在正在做的那樣的條件。 也許創建一個自定義錯誤構造函數並將條件放入其中以避免在每個 function 調用中重復自己。

  2. 向前端發送一條狀態碼為 500 的通用錯誤消息。在后端記錄整個錯誤 object,以便您知道出了什么問題。 你是真正關心錯誤的原因、內容、方式、時間的人。

就個人而言,我將 go 與選項 2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM