2016-02-11 75 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地址字符串预计