我想知道如何妥善处理错误,例如:
"name": "MongoError",
"err": "E11000 duplicate key error index: DB.users.$login_1 dup key: { : \"vado\" }",
"code": 11000,
"n": 0,
"connectionId": 578,
"ok": 1
目前,我已经有了一个管理错误的工作流程,而不仅仅是猫鼬错误。 从控制器,我调用我的Validator(使用node-validator)来检查请求中的每个字段(get / post),如果出现错误,它会为每个错误调用带有预定义错误消息的回调方法。
d: data,
e: errors,
k: key,
m: message (key of the message),
a: message args,
s: status,
t: type of error (v: validationError)
这只是为了让您理解" design"。
{
"d": {
"e": [
{
"k": "email",
"m": "__10_14"
},
{
"k": "email",
"m": {
"m": {
"m": "__10_11",
"a": [
4,
30
]
},
"a": [
4,
30
]
}
},
{
"k": "email",
"m": "__10_13"
}
]
},
"s": false,
"t": "v"
}
因此,基本上,这个Validator能够管理所有类型的错误,可以使用mongoose.Schema或其他验证来建立模型字段,而不需要与models / db链接。
现在,我想知道mongoose错误验证,我正在寻找一种正确的方法,因为我的Validator无法处理它们。 (实际上不应该是,也许是另一个遗传Validator的MongooseValidator,但我不确定)
我找到了https://github.com/leepowellcouk/mongoose-validator,但它的作用类似于我的验证器,但它似乎无法正确处理来自"复制"这类错误的错误。
我想要做的是始终以正确的方式处理由mongoose引发的所有异常,以便每次都有预定义的消息。
我还想创建检查重复和所有内容的方法,但我认为我会在模型之间使用继承来做到这一点。
在生产中产生这些错误吗?显示数据库和路径以及所有内容? (我无法测试)