Couchdb 在服务器端生成文档ID

Couchdb 在服务器端生成文档ID,couchdb,Couchdb,当创建文档并让coach为您创建ID时,它是否检查ID是否已经存在,或者我是否仍然会产生冲突 我需要在我的应用程序中生成UUID,我想知道这是否会与让Coach这样做有所不同。使用request,但您应该知道,底层HTTP POST方法不是幂等的,客户端可能会因为一些网络问题而自动重试,这可能会在数据库中创建多个文档。使用request进行此操作,但您应该知道,底层HTTP POST方法不是幂等的,客户端可能会由于某些网络问题而自动重试,这可能会在数据库中创建多个文档。正如Kxepal已经提到的

当创建文档并让coach为您创建ID时,它是否检查ID是否已经存在,或者我是否仍然会产生冲突


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

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

使用request进行此操作,但您应该知道,底层HTTP POST方法不是幂等的,客户端可能会由于某些网络问题而自动重试,这可能会在数据库中创建多个文档。

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


但是,您可以使用从服务器检索UUID列表,并将其用于存储文档。返回的UUID取决于所使用的,但复制的机会(在大多数情况下)非常小。

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



但是,您可以使用从服务器检索UUID列表,并将其用于存储文档。返回的UUID将取决于所使用的,但复制的可能性(在大多数情况下)非常小。

您可以并且应该提供文档id,即使在使用时也是如此。跳过该步骤会使重新提交的请求创建重复文档的问题更加严重。另一方面,如果您确实分配了ID,并且部分请求两次到达couchdb(就像重新连接代理的情况一样),那么您的响应将包括一些冲突,您可以安全地忽略这些冲突,您知道冲突来自您,在同一个请求中,您可以并且应该提供文档ID,即使使用。跳过该步骤会使重新提交的请求创建重复文档的问题更加严重。另一方面,如果您确实分配了ID,并且部分请求两次到达couchdb(就像重新连接代理的情况一样),那么您的响应将包括一些冲突,您可以安全地忽略这些冲突,因为您知道冲突来自您,在同一个请求中

您不能创建自己的文档ID有什么原因吗?人们是如何阅读此问题的?我正在生成ID,我只是想知道是否有什么要考虑比让沙发做它。正如KxpAl在他的回答中提到的,这个特性存在于不能创建他们自己的文档ID的客户端,而不是重新使用的模式。为什么您希望服务器设置id?这样我就可以在本地快速修改文档,并使用
\u bulk\u docs
批量创建/更新文档。即使使用批量文档界面,您也可以而且应该提供文档id。跳过该步骤会使重新提交的请求创建重复文档的问题更加严重。另一方面,如果您确实分配了ID,并且部分请求两次到达couchdb(就像重新连接代理的情况一样),那么您的响应将包括一些冲突,您可以安全地忽略这些冲突,因为您知道冲突来自您,在同一个请求中。您不能创建自己的文档ID有什么原因吗?人们是如何阅读此问题的?我正在生成ID,我只是想知道是否有什么要考虑比让沙发做它。正如KxpAl在他的回答中提到的,这个特性存在于不能创建他们自己的文档ID的客户端,而不是重新使用的模式。为什么您希望服务器设置id?这样我就可以在本地快速修改文档,并使用
\u bulk\u docs
批量创建/更新文档。即使使用批量文档界面,您也可以而且应该提供文档id。跳过该步骤会使重新提交的请求创建重复文档的问题更加严重。另一方面,如果您确实分配了ID,并且部分请求两次到达couchdb(就像重新连接代理的情况一样),那么您的响应将包括一些冲突,您可以安全地忽略这些冲突,因为您知道冲突来自同一请求中的您。“通常不建议在不提供您自己的ID的情况下发布文档。”-
POST
当您有身份证时?你的意思是这应该是一个
放置
对吗
POST
是服务器生成ID的时候,而
PUT
是您自己提供ID的时候。实际上,@Daniel,您可以使用显式文档id
POST
:只需添加
\u id
字段来请求JSON负载。其效果与PUT相同,但由于不建议使用
POST
的原因,您有时可能会收到有关冲突更新的错误,而不是成功报告。是的,我知道您可以,但是,如果您遵循您通常对POST和PUT使用的看法,您是否应该这样做呢?@daniel:一些较老的http客户端无法使用GET、HEAD和POST以外的方法。同样地,couchdb允许所有数据修改请求被编码为POST。同样,我知道您可以,但我想您可以选择,如果您提供ID,使用PUT不是更合适吗?参考上述答案中的陈述:“……通常不建议在未提供您自己的_id的情况下发布文档。”如果没有“通常不建议在未提供您自己的_id的情况下发布文档。”——
POST
当您有id时?你的意思是这应该是一个
放置
对吗
POST
是服务器生成ID的时候,而
PUT
是您自己提供ID的时候。实际上,@Daniel,您可以使用显式文档id
POST
:只需添加
\u id
字段来请求JSON负载。其效果与PUT相同,但由于不建议使用
POST
的相同原因,您有时可能会收到有关冲突的错误