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

eag*_*gor 5 mongoose mongodb node.js

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

userSchema.index({ name: 1, email: 1 }, { unique: true });
Run Code Online (Sandbox Code Playgroud)

Man*_*kar 6

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

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

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

2)参考我在Mongoose独特的预保存验证中做错了什么? 你也可以在快递中使用预保存方法

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


nif*_*uce 5

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

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

npm install --save mongoose-beautiful-unique-validation
Run Code Online (Sandbox Code Playgroud)

然后,您可以简单地将其用作全局插件(如下所示)或每个架构。

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

mongoose.plugin(beautifyUnique);
Run Code Online (Sandbox Code Playgroud)

有关完整的见解和参考,请参阅此注释和GitHub上的自述文件

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