Couchrest 中实现独特约束之类的最佳实践是什么。我可以用 _id 来做到这一点,但是如果我想在多个字段上实现它,不一定要作为一个组合,甚至是单独的。比如说我希望电子邮件 ID 和用户名都是唯一的,只是为了指出一个例子。
是否有在不使用 _id 字段的情况下执行此操作的最佳实践。
在 CouchDB 中强制唯一性的唯一方法是使用_id
字段。
我相信其他需要唯一性的东西的最佳实践是允许客户端存储它,然后检查作为外部程序(或线程,或 cron 作业等)的唯一性,然后对此做出反应。例如,map/reduce 视图可以很容易地产生相同字段值的计数,因此搜索字段count > 1
很容易。接下来,更正您找到的所有重复项。
您甚至可以将其视为具有请求/拒绝或请求/批准步骤的简单工作流程。存储初始文档,但它不是官方的,直到它有"confirmed":true
. 只有在您的离线检查器执行了上述检查后,它才会收到确认。
我认为在现实世界的应用程序中,使用 CouchDB 开发的人会推迟唯一性约束,原因与人们尽量不要过早地优化相同。您可能会注意到,无论如何,99% 的用户总是输入一个唯一的电子邮件地址,因此始终尝试强制唯一性只会给自己制造一个您不需要的问题。