уникальное ограничение в модели couchrest - PullRequest
1 голос
/ 02 октября 2011

Какова лучшая практика в Couchrest для реализации чего-то вроде уникального ограничения. Я мог бы сделать это с _id, но что, если я захочу реализовать его на нескольких полях, не обязательно как составной, но даже отдельно. Скажем, например Я хочу, чтобы идентификатор электронной почты и имя пользователя были уникальными, просто чтобы указать на пример.

Есть ли лучший способ сделать это без использования поля _id.

1 Ответ

2 голосов
/ 02 октября 2011

Единственный способ обеспечить уникальность в CouchDB - это поле _id.

Я полагаю, что лучшая практика для других вещей, которые нуждаются в уникальности, - это позволить клиенту сохранить ее, а затем проверить на уникальность каквнешнюю программу (или поток, или работу cron и т. д.), а затем отреагируйте на это.Например, представление карты / уменьшения может легко произвести подсчет идентичных значений полей, поэтому поиск полей с count > 1 очень прост.Затем исправьте все найденные дубликаты.

Вы можете даже рассматривать это как простой рабочий процесс с шагами запрос / отклонение или запрос / одобрение.Сохраните исходный документ, но он не является официальным , пока, например, он не будет иметь "confirmed":true.Он получает подтверждение только после того, как ваша офлайн-проверка выполнила вышеуказанные проверки.

Я думаю, что в реальных приложениях люди, разрабатывающие с CouchDB, откладывают ограничения уникальности, по той же причине, по которой люди стараются не оптимизировать преждевременно.Вы, вероятно, заметите, что 99% пользователей в любом случае всегда вводят уникальный адрес электронной почты, поэтому попытка постоянно поддерживать уникальность просто создает для себя проблему, которая вам не нужна.

...