2015-05-29 2 views
2

Я использую паруса 0.11 и sails-mongo 0.11.2 адаптер.Sails 0.11 & Sails-Mongo 0.11.2 уникальное ограничение не работает

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

nickname: { 
    type: 'string', 
    unique: true 
} 

Это не работает, я могу добавить два пользователей с одинаковым никто без проблем. Любая подсказка о том, как исправить эту проблему ?.

ответ

1

Хорошо, я боролся с этой точной проблемой и разрешил ее. В config/locales/models.js измените migrate: 'safe' для переноса: 'alter'. Поднимите приложение. Если в вашем уникальном поле есть какие-либо дубликаты, это будет ошибкой при подъеме, и вам придется удалить дубликаты. После очистки любой дубликат поднять. Единственный должен теперь работать. Теперь вы можете вернуться к миграции: «безопасный» и уникальный должен быть продолжен.

0

Вы пытались указать флаг схемы в true?

http://sailsjs.org/#!/documentation/concepts/ORM/model-settings.html

+0

Да, все еще не создавая необходимые индексы в базе данных монго. –

+0

Такая же проблема здесь, через несколько месяцев, попыталась схема = true, та же проблема. – edencorbin

0

По конструкции парусов не делает миграции в производстве, поэтому индексы Mongo не генерируются.

Одним из решений было бы добавить индексы вручную в коллекции монго, если бы они были необходимы.

Другим решением было бы перенести локальную базу данных mongo с парусов и скопировать ее в производственную базу данных, чтобы она имела индексы.

+0

@icrespofalco, я попробовал это, запустив db.test.createIndex ({поле: 1}), mongo сообщило, что индекс был создан успешно. Повторное снятие парусов приложение уникально: истинный атрибут по-прежнему позволяет дублировать записи. Я в недоумении, что попробовать, можете ли вы предоставить более подробную информацию о том, как добавлять индексы вручную? – edencorbin

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