2016-02-11 74 views
0

當從MongoDB收到答案時,知道我的錯誤是重複鍵,但爲什麼status = 500 ?,應該是4 **。 我使用的NodeJS(帆/ express.js)爲什麼MongoDB發送錯誤500時重複密鑰

{ "error": { 
    "error": "E_UNKNOWN", 
    "status": 500, 
    "summary": "Encountered an unexpected error", 
    "raw": { 
     "name": "MongoError", 
     "code": 11000, 
     "err": "E11000 duplicate key error index: eReporterDB.users.$name_1 dup key: { : \"codin\" }" 
    } } } 
+1

夥計對象的「字符串」,這是蒙戈,不Postgres的。 – freakish

+3

你可能會得到500,因爲MongoDB引發了一個沒有被任何東西捕獲的異常,這是一個服務器錯誤而不是客戶端錯誤。 –

+0

這也發生在postgres中。 –

回答

0

答案是here

的NodeJS

操作錯誤與錯誤的程序員

這是有幫助的所有錯誤分成兩大類:

操作錯誤代表正確編寫的程序遇到的運行時問題。這些不是程序中的錯誤。事實上,這些通常是其他問題的問題:系統 本身(例如,內存不足或打開的文件太多),系統的配置(例如,沒有路由到遠程主機),網絡(例如, 套接字掛斷)或遠程服務(例如,500錯誤,連接失敗或諸如此類)。示例包括:

failed to connect to server 
    failed to resolve hostname 
    **invalid user input** 
    request timeout 
    server returned a 500 response 
    socket hang-up 
    system is out of memory 

程序員錯誤是程序中的錯誤。這些東西總是可以通過更改代碼來避免。他們永遠不能妥善處理 (因爲根據定義,有問題的代碼被破壞)。 試圖讀取的財產「未定義」 稱爲無回調 異步函數傳遞,其中一個對象,預計 通過其中一個IP地址字符串預計