【发布时间】:2016-02-24 21:24:35
【问题描述】:
我不希望重复的用户名能够在我的网站上注册。所以,我在猫鼬模型中放置了这样的东西:
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 进程。
【问题讨论】:
-
db.user.getIndexes返回什么?你用的是什么版本的猫鼬? -
如果您没有收到重复的键错误,那么很明显该索引不存在。一个很好的理由是现有数据已经包含“重复键”,因此索引创建错误。有关如何识别和删除的讨论,请参阅Remove Duplicates From MongoDB。如果
.aggregate()变得太大(不太可能),那么您可以随时使用“upserts”写入另一个集合。
标签: javascript node.js mongodb mongoose unique-key