生成文档ID服务器端

时间:2013-10-24 12:29:09

标签: couchdb

创建文档并让Couch为您创建ID时,是否检查ID是否已存在,还是仍然可能产生冲突?

我需要在我的应用中生成UUID,并想知道是否与让Couch这样做有所不同。

3 个答案:

答案 0 :(得分:2)

使用POST /db请求,但您应该知道底层HTTP POST方法不是幂等的,并且客户端可能会因为某些网络问题的问题而自动重试,这可能会创建多个文档在数据库中。

答案 1 :(得分:1)

正如Kxepal已经提到的,通常不建议在不提供自己的_id的情况下发布文档。

但是,您可以使用GET /_uuids从服务器检索UUID列表,并将其用于存储文档。返回的UUID将取决于所使用的algorithm,但重复的可能性(对于大多数目的而言)微不足道。

答案 2 :(得分:1)

即使使用bulk document interface,您也可以并且应该提供文档ID。跳过该步骤会导致重新提交的请求创建重复文档的问题更严重。另一方面,如果您确实分配了ID,并且部分请求到达了couchdb两次(如重新连接代理的情况),那么您的响应将包含一些冲突,您可以放心地忽略,您知道冲突来自你,在同一个请求中