Уникальный индекс мангуста не работает

Я не хочу, чтобы дубликаты имен пользователей могли регистрироваться на моем веб-сайте. Итак, я помещаю что-то вроде этого в модель мангуста:

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.


person Darth.Vader    schedule 24.02.2016    source источник
comment
Возможный обман stackoverflow.com/questions/30966146 /   -  person JohnnyHK    schedule 25.02.2016
comment
Что возвращает db.user.getIndexes? Какую версию мангуста вы используете?   -  person Alex Blex    schedule 25.02.2016
comment
Если вы не получаете повторяющиеся ключевые ошибки, то, скорее всего, индекса не существует. Действительно веской причиной для этого является то, что существующие данные уже содержат повторяющиеся ключи и, следовательно, ошибки создания индекса. См. Удаление дубликатов из MongoDB, чтобы узнать, как идентифицировать и удалить. Если .aggregate() окажется слишком большим (маловероятно), то вы всегда можете вместо этого записать в другую коллекцию с upserts.   -  person Blakes Seven    schedule 25.02.2016


Ответы (1)


Наконец-то я нашел решение этой проблемы, с которой я также столкнулся

тебе нужно

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

person ByronC    schedule 04.01.2017