0

我们是 Couch DB 的新手,不确定如何使用文档修订号。特别是,我们不确定客户端应用程序是否应该知道这个修订号,以及是否应该在每次保存请求时将其发送回服务器以确保连续性。

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

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

4

1 回答 1

6

是的,_rev每次保存时都包含该属性。来自http://wiki.apache.org/couchdb/HTTP_Document_API#PUT

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

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

于 2013-03-04T02:50:56.383 回答