Единственный способ обеспечить уникальность в CouchDB - это поле _id
.
Я полагаю, что лучшая практика для других вещей, которые нуждаются в уникальности, - это позволить клиенту сохранить ее, а затем проверить на уникальность каквнешнюю программу (или поток, или работу cron и т. д.), а затем отреагируйте на это.Например, представление карты / уменьшения может легко произвести подсчет идентичных значений полей, поэтому поиск полей с count > 1
очень прост.Затем исправьте все найденные дубликаты.
Вы можете даже рассматривать это как простой рабочий процесс с шагами запрос / отклонение или запрос / одобрение.Сохраните исходный документ, но он не является официальным , пока, например, он не будет иметь "confirmed":true
.Он получает подтверждение только после того, как ваша офлайн-проверка выполнила вышеуказанные проверки.
Я думаю, что в реальных приложениях люди, разрабатывающие с CouchDB, откладывают ограничения уникальности, по той же причине, по которой люди стараются не оптимизировать преждевременно.Вы, вероятно, заметите, что 99% пользователей в любом случае всегда вводят уникальный адрес электронной почты, поэтому попытка постоянно поддерживать уникальность просто создает для себя проблему, которая вам не нужна.