CouchDB如何计算修订版号

时间:2011-05-10 18:48:44

标签: erlang couchdb

我试图了解CouchDB如何计算文档的修订版ID。我从源头注意到它是由这段代码计算的:

couch_util:md5(term_to_binary([Deleted, OldStart, OldRev, Body, Atts2]))

我知道如果我创建一个没有附件的新空文档,CouchDB总是给它一个1-967a00dff5e02add41819138abb3284d的修订版,其中十进制数为<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<> ;>

但是,如果我在erlang提示符下键入以下内容(false表示已删除,0表示OldStart,0表示OldRev,空主体且没有附件):

erlang:md5(term_to_binary([false, 0, 0, [], []])).                   

我总是得到

<<26,196,244,40,211,149,193,185,214,6,230,61,54,138,62,132>>

回。

那么我在这里做错了什么 - 如何计算沙发生成的实际修订版?

1 个答案:

答案 0 :(得分:6)

在阅读Emit Tuples From Erlang Views In CouchDB的答案之后,我意识到我做错了的事情并没有将身体的空支持列表包含在元组中。我不知道为什么沙发会这样做,但那就是问题所在。

erlang:md5(term_to_binary([false, 0, 0, {[]}, []])).

给出正确答案

&LT;&LT; 150,122,0,223,245,224,42,221,65,129,145,56,171,179,40,77&GT;&GT;