检查附件是否与couchdb中的当前文档修订版本保持同步

时间:2017-10-20 10:39:04

标签: couchdb

在我的应用程序中,我通过监听更改流来后处理couchdb文档。方案如下:

  1. 通过/ db / _changes
  2. 通知我的应用程序文档已更改
  3. 它获取文档并检查文档是否具有适当的附件,以及附件的revpos是否等于document-rev的第一部分。例如,如果rev看起来像13-D2JDBS3那么我将字符串拆分为-字符,进行第一次匹配,将其转换为数字并将其与附件的revpos进行比较
  4. 如果上述检查失败,我会生成PDF并将其附加到文档中。
  5. 到目前为止这项工作非常好。但我想知道这是否是由couchdb的设计故意的。依赖这种行为是否安全(revpos是否反映了它所属的修订的第一部分)?我在文档中找不到任何相关内容。

    提前感谢您对此主题的任何暗示。

1 个答案:

答案 0 :(得分:1)

我认为这是有意的,似乎是公开的,有记录的API,尽管措辞可能会有些澄清。

他们说Revisions documentation

  

修订号是文档传输表示的MD5哈希,其中N前缀表示文档更新的次数。

他们在Attachments documentation说:

  

revpos(号码):添加附件后修订号码 [强调他们的]

有点不幸的是,他们将整个 _rev标识符称为"修订号"在前面的文档中,因为很明显,后者的意图只是强调" N"前缀为" "。

您可以考虑在此处提交文档错误,要求他们澄清revpos始终是" N" " N前缀"的一部分如果这确实是他们愿意保证的东西。