2015-01-13 112 views
0

不工作我有一個架構設置是這樣的:唯一索引貓鼬架構

var UserSchema = new Schema({ 
    id: {type: String, required: true, unique: true, index: true, default: mongoose.Types.ObjectId}, 

    name: { type: String, required: true }, 
    email: { type: String, required: true, unique: true, index: true }, 
    mobile: { type: String, unique: true, sparse: true }, 
    password: { type: String, required: true } 

}); 

似乎工作除了電子郵件場偉大在重複讓,儘管有unique:true集。我做到以下幾點:

User.create({ 
    name: req.body.name, 
    email: req.body.email, 
    mobile: req.body.mobile, 
    password: password 
}, function(err, user) { 
    if (err) return res.send({ invalid : true }); 
}); 

如果req.body.email是這是已經在數據庫中的值,上面的查詢應返回err。但事實並非如此,它會使新用戶完美無缺,從而導致數據庫中的電子郵件重複。

這是怎麼發生的?

+0

試試這個:email:{type:String,required:true,index:{unique:true}} –

+0

@RaxWunter不幸的是沒有工作。似乎整個數據庫都忽略了唯一的字段。 – Coop

+0

添加'User.on('index',function(err){console.log(err);});'查看是否有錯誤導致索引無法創建。另外,如果以前在'email'上存在非唯一索引,則需要手動將其刪除,以便將其重新創建爲唯一索引。 – JohnnyHK

回答

0

mongo,因此mongoose會爲您的文檔分配一個自動ID字段。通常是「_id」。 嘗試從您的模式中刪除「id」以解決您的問題。