“ERRMSG”: “E11000重复键错误收集:reduxpress.users指数:address.email_1 DUP键:{:空}”

问题描述:

{ 
    "status": "Error", 
    "typeof": "object", 
    "result": { 
    "code": 11000, 
    "index": 0, 
    "errmsg": "E11000 duplicate key error collection: reduxpress.users index: address.email_1 dup key: { : null }", 
    "op": { 
     "mobile": "(950) 874-8901 x8729", 
     "_id": "571b6e353731775404ac05b9", 
     "points": 0, 
     "created": "2016-04-23T12:44:37.111Z", 
     "roles": "customer", 
     "profileImageURL": "default.png", 
     "email": "[email protected]", 
     "password": "VF1WQZ72HEyS0a6", 
     "name": "Junior94", 
     "__v": 0 
    } 
    } 
} 

//用户模式 '使用严格的';“ERRMSG”: “E11000重复键错误收集:reduxpress.users指数:address.email_1 DUP键:{:空}”

var mongoose = require('mongoose'), 
    Schema = mongoose.Schema, 
    crypto = require('crypto'), 
    validator = require('validator'); 
// generatePassword = require('generate-password'), 
// owasp = require('owasp-password-strength-test'); 

var validateLocalStrategyProperty = function(property) { 
    return (property.length); 
}; 

var validateLocalStrategyEmail = function(email) { 
    return (validator.isEmail(email)); 
}; 

var UserSchema = new Schema({ 
    name: { 
     type: String, 
     trim: true, 
     default: '', 
     validate: [validateLocalStrategyProperty, 
      'Please fill in your first name' 
     ] 
    }, 
    password: { 
     type: String, 
     default: '' 
    }, 
    email: { 
     type: String, 
     unique: true, 
     lowercase: true, 
     trim: true, 
     default: '', 
     match: /.+\@.+\..+/, 
     validate: [validateLocalStrategyEmail, 
      'Please fill a valid email address' 
     ] 
    }, 
    mobile: { 
     type: String, 
     // unique: true, 
     required: [true, 'User phone is required'], 
     trim: true 
    }, 
    profileImageURL: { 
     type: String, 
     default: 'default.png' 
    }, 
    roles: { 

     type: String, 
     enum: ['user', 'admin', 'shop manager', 'customer', 
      'operator' 
     ], 

     default: ['customer'], 
     required: 'Please provide at least one role' 
    }, 
    lastLogout: { 
     type: Date 
    }, 
    created: { 
     type: Date, 
     default: Date.now 
    }, 
    resetPasswordToken: { 
     type: String 
    }, 
    resetPasswordExpires: { 
     type: Date 
    }, 
    points: { 
     type: Number, 
     default: 0 
    } 
}); 

module.exports = mongoose.model('User',UserSchema); 

我试图用摊贩包保存用户生成的数据,但我得到这个错误我没有在任何database.can重复的电子邮件妳告诉我什么是错误。我尝试不同的事情,但没有得到任何结果

+0

这是因为数据库的现有索引,请参阅http://*.com/questions/17114851/mongo -id场,重复键错误 –

提交您的JSON文件的email是有超过null值和提交的email也注意到收录申请,也可以指定本场unique这扔exceeption

首先删除索引电子邮件领域这样

db.users.dropIndex({ "email": 1 }) 

,如果你需要归档的电子邮件指数和申请必须有运动成为空电子邮件

然后创建sparse index这样

db.users.createIndex({ "email": 1 }, { sparse: true }) 

超过知识sparse index是在这里:https://docs.mongodb.org/manual/core/index-sparse/