MongoDB唯一索引自定义错误消息E11000

时间:2014-10-20 08:30:48

标签: node.js mongodb mongoose

有没有办法为' E11000重复键错误设置自定义错误消息'在MongoDB中?
(最好使用猫鼬):

userSchema.index({ name: 1, email: 1 }, { unique: true });

3 个答案:

答案 0 :(得分:6)

1)您可以使用mongoose-unique-validator。

https://www.npmjs.com/package/mongoose-unique-validator

这使得错误处理变得更加容易,因为当您尝试违反唯一约束而不是来自MongoDB的E11000错误时,您将收到Mongoose验证错误。

2) 在What am I doing wrong in this Mongoose unique pre-save validation?中引用 你也可以在快递中使用预保存方法

Schema.pre("save",function(next, done) {
//Here you can search if the record already exists and return custom message.
next();
});

答案 1 :(得分:5)

您可以使用unique: true轻松自定义和显示mongoose-beautiful-unique-validation验证错误的错误消息。

为此,只需使用包mongoose-beautiful-unique-validation

npm install --save mongoose-beautiful-unique-validation

然后,您只需将其用作全局插件(如下所示)或每个架构。

const beautifyUnique = require('mongoose-beautiful-unique-validation');

mongoose.plugin(beautifyUnique);

要获得完整的见解和参考,请在GitHub上查看此commentReadme

您可能还希望使用包mongoose-validation-error-transform来显示Mongoose验证错误消息。

答案 2 :(得分:0)

不,不是没有更改MongoDB源代码并使用新的错误消息重新编译它。您可以根据自己的应用程序代码更换消息。例如,您可以将索引构建调用包装在一个函数中,如果发生唯一键约束违规错误,它将返回不同的错误消息。