Я не хочу дублировать имена пользователей, чтобы иметь возможность зарегистрироваться на моем сайте. Итак, я помещаю что-то подобное в мангустов модели:Mongoose уникальный индекс не работает
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.
Возможные контратип Http: // StackOverflow. com/questions/30966146/mongoose-schema-unique-not-being-respected – JohnnyHK
Что возвращает 'db.user.getIndexes'? Какую версию мангуста вы используете? –
Если вы не получаете повторяющиеся ключевые ошибки, то наиболее определенно индекс не существует. Поистине хорошей причиной этого является то, что существующие данные уже содержат «дублирующие ключи» и, следовательно, ошибки создания индекса. См. [Удалить дубликаты из MongoDB] (http://stackoverflow.com/questions/31557053/remove-dups-from-mongodb/31558107#31558107) для обсуждения того, как идентифицировать и удалить. Если '.aggregate()' оказывается слишком большим (маловероятным), тогда вы всегда можете записать в другую коллекцию с помощью «upserts». –