2016-02-24 7 views
1

Я не хочу дублировать имена пользователей, чтобы иметь возможность зарегистрироваться на моем сайте. Итак, я помещаю что-то подобное в мангустов модели: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.

+1

Возможные контратип Http: // StackOverflow. 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

я наконец нашел затруднительное к этому вопросу я также имеющей

вам нужно

НПМ установки мангуста уникальный-валидатор

 Смежные вопросы

  • Нет связанных вопросов^_^