Javascript Mongoose-检测重复字段
我有两个唯一字段(电子邮件和用户名)的用户模式,当我尝试创建具有重复字段的新用户时,我出现了该错误Javascript Mongoose-检测重复字段,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我有两个唯一字段(电子邮件和用户名)的用户模式,当我尝试创建具有重复字段的新用户时,我出现了该错误 { "error": { "code": 11000, "index": 0, "errmsg": "E11000 duplicate key error collection: InstaClone.users index: email_1 dup key: { : \"baidario.ua@gmail.com\" }", "op": { "ha
{
"error": {
"code": 11000,
"index": 0,
"errmsg": "E11000 duplicate key error collection: InstaClone.users index: email_1 dup key: { : \"baidario.ua@gmail.com\" }",
"op": {
"hashedPassword": "$2a$10$eaMym5AMibJlGOSBV3/DHOXPhSoMMDTNwxGcSOn4tEPg07htyQ2Ey",
"email": "baidario.ua@gmail.com",
"username": "baidario",
"fullName": "Roman Baida",
"_id": "58d3a8acdc57641e30e9027a",
"created": "2017-03-23T10:50:49.188Z",
"__v": 0
}
}
}
如何获得重复的文件名?我看到的唯一方法是解析
errmsg
字段。也许有人知道更好的方法?要自定义mongoose unique validation返回的错误,您可以使用名为:mongoose Beauty unique validation
在插入新用户之前,只需运行类似db.users.find({$or:[{“username”:username},{“email”:email})的查询。如果它确实返回文档,则用户名或电子邮件已存在于db@felix该解决方案有一个竞争条件,在这个条件下,可以在
find()之间创建一个新用户
返回并执行create()
(导致重复键错误)。或者,请参见如何“捕获”E11000错误。