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错误。