0

问题

作为标准 couchdb 验证功能的一部分,是否可以查询其他 couchdb 文档?

如果不是,将其他文档的属性作为验证规则的一部分包含在 couchdb 验证函数中的标准方法是什么?

基本原理

考虑一个普通的地址簿应用程序,其中验证功能旨在防止两个或多个条目在一个地址簿条目字段中具有相同的“电子邮件”值。

还考虑一个地址簿应用程序,它可以在单独的文档中指定验证规则,具体取决于邮政编码是基于美国的邮政编码还是其他。

4

1 回答 1

2

不,不可能在validate_doc_update函数中查询其他 couchdb 文档。每个单独运行,仅传递对:新文档、旧文档和用户(如果适用)的引用。

我的个人经验是至少有三种处理重复检查的选项:

  1. 使用 Cloudant 作为您的 CouchDB 提供程序。如果您想进行试验,它们现在提供免费层,但它们保证 CouchDB 数据库的节点之间的一致性。(见#2)
  2. 我已经为使用类型键作为 ID 的名称使用了辅助“保留表”。然后,如果不使用像 Cloudant 这样的系统,您需要检查冲突。基本上,有一个简单的文档可以维护一个防止重复的密钥。鉴于您需要注意冲突,因此编写代码并不有趣。(即使使用 cloudant,您也需要处理失败的写入请求,但它比处理跨多个节点的数据复制的时间问题更容易)。
  3. 例如,使用像 MySQL 这样的传统数据库,它可以为您所描述的特定数据值维护唯一且一致的索引。不过,将文档存储在 CouchDB 中。虽然您需要不同的数据提供者有点烦人,但它是可靠的。
  4. (可选:决定 CouchDB 不适合您正在构建的系统类型)
于 2012-10-29T20:57:00.860 回答