创建文档并让Couch为您创建ID时,是否检查ID是否已存在,还是仍然可能产生冲突?
我需要在我的应用中生成UUID,并想知道是否与让Couch这样做有所不同。
答案 0 :(得分:2)
使用POST /db请求,但您应该知道底层HTTP POST方法不是幂等的,并且客户端可能会因为某些网络问题的问题而自动重试,这可能会创建多个文档在数据库中。
答案 1 :(得分:1)
正如Kxepal已经提到的,通常不建议在不提供自己的_id的情况下发布文档。
但是,您可以使用GET /_uuids
从服务器检索UUID列表,并将其用于存储文档。返回的UUID将取决于所使用的algorithm,但重复的可能性(对于大多数目的而言)微不足道。
答案 2 :(得分:1)
即使使用bulk document interface,您也可以并且应该提供文档ID。跳过该步骤会导致重新提交的请求创建重复文档的问题更严重。另一方面,如果您确实分配了ID,并且部分请求到达了couchdb两次(如重新连接代理的情况),那么您的响应将包含一些冲突,您可以放心地忽略,您知道冲突来自你,在同一个请求中