Уникальный атрибут SailsJS и Mongo игнорируется

Кажется, я не могу получить уникальный атрибут для фактической проверки/подтверждения уникальных значений при использовании Mongo в SailsJS. Я легко получаю одинаковые имена пользователей. Есть предположения? Я проверил другой пост об этом, но это было связано с использованием баз данных Disk/Memory.

Паруса 0.10.x с парусами[email protected]

Модель:

module.exports = {

  attributes: {
    username:{
        type:'string',
        unique:true,
        required:true
    }
  }
};

Файл конфигурации Connections.js

mongo: {
    adapter: 'sails-mongo',
    host: 'localhost',
    port: 27017,
    schema:true,
    migrate: 'safe',
    database: 'mydatabase'
},

person Jacob Bolton    schedule 19.08.2014    source источник


Ответы (3)


Ответ на GitHub здесь: https://github.com/balderdashy/sails-mongo/issues/181

Если вы установили migrate: 'safe', Waterline не будет пытаться создавать какие-либо индексы в базе данных. Unique работает с использованием уникальных индексов, созданных в базе данных во время «миграции».

Если вы работаете в производственной среде, вам следует самостоятельно создать индексы и оставить migrate: 'safe' установленным, чтобы Waterline не касался ваших производственных данных. В разработке вы можете установить migrate: 'alter', и эти индексы должны быть созданы.

person particlebanana    schedule 19.08.2014
comment
Кажется, эта опция теперь переместилась на models.js, а не на connections.js. - person IanVS; 24.02.2015
comment
Я пробовал "безопасные", "изменяющие" и "отбрасывающие" значения переноса - ни один из них не работал для уникальных. Как заставить монго создавать индексы? - person ilyaigpetrov; 19.07.2015

Ты пробовал:

  • Остановить паруса
  • Вручную удалить соответствующую базу данных + таблицы
  • Начать паруса
  • Попробуйте снова

Когда вы создаете коллекцию, в этот момент создается уникальный индекс, поэтому, если вы добавляете уникальный атрибут после создания коллекции без него, он, вероятно, не будет работать. Использование драйвера mongodb напрямую, вероятно, приведет к ошибке, но, поскольку Waterline не зависит от него, его, вероятно, это не волнует.

person Xinzz    schedule 19.08.2014

Я создал модуль ловушки, который обеспечивает создание индексов во всех средах https://github.com/didil/sails-hook-mongo-auto-index . Надеюсь поможет, предложения приветствуются

person Adil    schedule 29.10.2015