2016-02-24 116 views
1

我不希望重複的用戶名能夠在我的網站上註冊。所以,我把這樣的事情在貓鼬模型:貓鼬獨特索引不起作用

var userSchema = new mongoose.Schema({ 
    username: { type: String, index: { unique: true }}, 
    password: String 
}); 

但是,當我在create像下面的控制器的新用戶,它不會拋出異常,並創建一個副本。

mongoose.model('User').create({ 
    username : email, 
    password : password 
}, function(err, user) { 
    if (err) { 
     // WHY DOES IT NOT THROW ERROR AND GET HERE? 
    } 
}); 

我已經嘗試重新啓動我的應用程序和mongod進程。

+1

HTTP的可能欺騙://計算器。 com/questions/30966146/mongoose-schema-unique-not-being-respected – JohnnyHK

+2

db.user.getIndexes'返回什麼?你使用什麼版本的貓鼬? –

+1

如果你沒有得到重複鍵錯誤,那麼最明確的是索引不存在。這樣做的一個很好的理由是,現有數據已經​​包含「重複鍵」,並因此包含索引創建錯誤。查看[從MongoDB中刪除重複](http://stackoverflow.com/questions/31557053/remove-dups-from-mongodb/31558107#31558107)討論如何識別和刪除。如果'.aggregate()'變得太大(不太可能),那麼你總是可以用「upserts」來寫另一個集合。 –

回答

2

我終於找到了解決這個問題,我也有

需要

NPM安裝貓鼬器唯一驗證