2013-03-04 81 views
0

我们是Couch DB的新手,不确定如何使用文档修订版号。特别是,我们不确定客户端应用程序是否应该知道此修订版本号,以及是否必须将其每次保存请求发送回服务器以确保连续性。CouchDB - 使用文档修订号的正确方法?

我们的情况是,我们有一个位于CouchDB和客户端应用程序(用Actionscript 3编写的游戏)之间的NodeJS服务器。游戏世界被分解成一个网格,并且可能会在短时间内对单个图块进行多次更改,每个图块都会产生一个新的保存请求。由于不能保证两个同时发出的请求将以特定顺序到达服务器,因此我们需要确保只有在数据库中已有的数据比数据更新时才会保存数据块数据。

我们正在考虑使用我们附加到每个文档的自定义事务ID,但是我们担心我们可能只是做错了,或者缺少一些CouchDB的基本行为(即“正确的方式”)

回答

5

是的,包括_rev属性与每次保存。 From http://wiki.apache.org/couchdb/HTTP_Document_API#PUT

要更新现有文档,还需要发出PUT请求。在这种情况下,JSON主体必须包含一个_rev属性,它允许CouchDB知道编辑所依据的修订版本。如果当前存储在数据库中的文档修订版不匹配,则返回409冲突错误。

有关冲突管理的信息,请参阅:http://guide.couchdb.org/editions/1/en/conflicts.html#working

相关问题