有没有办法在MongoDB中为'E11000 duplicate key error'设置自定义错误消息?
(优选地,使用猫鼬):MongoDB唯一索引自定义错误消息E11000
userSchema.index({ name: 1, email: 1 }, { unique: true });
有没有办法在MongoDB中为'E11000 duplicate key error'设置自定义错误消息?
(优选地,使用猫鼬):MongoDB唯一索引自定义错误消息E11000
userSchema.index({ name: 1, email: 1 }, { unique: true });
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();
});
不,在不改变的MongoDB源代码和与该新的错误信息重新编译它。您可以使用您的应用程序代码将消息换成另外一种。例如,您可以将索引构建调用包装在一个函数中,该函数在发生唯一键约束违规错误时将返回不同的错误消息。
您可以轻松地使用mongoose-beautiful-unique-validation
unique: true
验证错误定制并显示错误信息。
要做到这一点只需用包mongoose-beautiful-unique-validation:
npm install --save mongoose-beautiful-unique-validation
然后,你可以简单地把它作为一个全球性的插件(如下)或每架构。
const beautifyUnique = require('mongoose-beautiful-unique-validation');
mongoose.plugin(beautifyUnique);
对于全面了解和参考,请参阅本comment并在GitHub上Readme。
您可能还想使用软件包mongoose-validation-error-transform来显示Mongoose验证错误消息。