2016-02-24 124 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安装猫鼬器唯一验证