【发布时间】:2014-09-08 01:41:43
【问题描述】:
我正在创建一个使用 Mongoose 与 MongoDb 交互的简单应用程序,独特的验证错误处理一直困扰着我。
UserSchema = new Schema({
email: {type:String, required: true, unique: true, trim: true, match: [emailRegex, 'Email format is invalid']},
hashedPassword: {type: String, default: ''},
salt: {type: String, required: true, unique:true}
}
);
在上面的架构中,我有unique :true 用于电子邮件,当输入具有重复电子邮件地址的新文档时,我收到的错误是:
{ [MongoError: insertDocument :: caused by :: 11000 E11000 duplic
ndex: testdb.users.$email_1 dup key: { : "minhs22sa22f@gmail.com
name: 'MongoError',
code: 11000,
err: 'insertDocument :: caused by :: 11000 E11000 duplicate key
estdb.users.$email_1 dup key: { : "minhs22sa22f@gmail.com" }' }
上面的错误对象需要相当多的努力才能从它们中提取信息以显示回客户端,所以我的问题是:有没有办法让它使用 validationError 来代替,这些更直观、更简单?
我也考虑过使用自定义路径验证,但如果可能,最好使用内置功能。
【问题讨论】:
-
我现在正在了解您的确切情况。似乎最好的选择是将正则表达式应用于 err 字段。换句话说,@wdberkeley 是有道理的。看来重复键的错误码是常数,应该很难从索引名中提取键(字段)。
标签: node.js mongodb error-handling mongoose