Couchdb 有没有办法在coach doc ID的开头加上一个字符串?即;第条<;此处为常规随机ID>&引用;

Couchdb 有没有办法在coach doc ID的开头加上一个字符串?即;第条<;此处为常规随机ID>&引用;,couchdb,Couchdb,这个标题很好地解释了我的问题。如果这不可能,我如何编写自己的ID?具体来说,我如何生成一个我知道当前没有被coach使用的ID字符串,然后我可以自己添加字符串并保存它。您可以使用来组合您选择的前缀和自动生成的UUID。更新处理程序基本上会截获HTTP请求,执行一些额外的转换并返回新文档。(以及响应用户而发送的消息) 在更新处理程序中,req对象还被赋予CouchDB将分配给文档的UUID。如果当前请求没有现有文档,您可以从头创建一个新文档 function (doc, req) { //

这个标题很好地解释了我的问题。如果这不可能,我如何编写自己的ID?具体来说,我如何生成一个我知道当前没有被coach使用的ID字符串,然后我可以自己添加字符串并保存它。

您可以使用来组合您选择的前缀和自动生成的UUID。更新处理程序基本上会截获HTTP请求,执行一些额外的转换并返回新文档。(以及响应用户而发送的消息)

在更新处理程序中,
req
对象还被赋予CouchDB将分配给文档的UUID。如果当前请求没有现有文档,您可以从头创建一个新文档

function (doc, req) {
    // if no document exists
    if (!doc) {
        // create a new one
        doc = {
            // req.id is the generated UUID for this request
            _id: "article_" + req.id
        }; 
    }

    // always return an array 1) the new doc and 2) the string response message
    return [ doc, "New Article Created" ];
}
这里的示例非常简单,我链接到的wiki页面中给出了更完整的示例。我只是想让你看看你的问题需要什么。更新处理程序是在数据库层实现某些应用程序逻辑的一种非常强大的方法。

您可以使用来组合您选择的前缀和自动生成的UUID。更新处理程序基本上会截获HTTP请求,执行一些额外的转换并返回新文档。(以及响应用户而发送的消息)

在更新处理程序中,
req
对象还被赋予CouchDB将分配给文档的UUID。如果当前请求没有现有文档,您可以从头创建一个新文档

function (doc, req) {
    // if no document exists
    if (!doc) {
        // create a new one
        doc = {
            // req.id is the generated UUID for this request
            _id: "article_" + req.id
        }; 
    }

    // always return an array 1) the new doc and 2) the string response message
    return [ doc, "New Article Created" ];
}

这里的示例非常简单,我链接到的wiki页面中给出了更完整的示例。我只是想让你看看你的问题需要什么。更新处理程序是在数据库层实现某些应用程序逻辑的一种非常强大的方法。

我更喜欢Dominic的答案,但为了完整性,您也可以从CouchDB预加载一组UUID,并自己组合它们。要获得一批五个:

$ curl -i example.iriscouch.com/_uuids?count=5
HTTP/1.1 200 OK
Server: CouchDB/1.2.0 (Erlang OTP/R15B)
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
ETag: "86908CQ9GCBC01P6VF18YM2P4"
Date: Sun, 12 Feb 2012 02:03:23 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 187
Cache-Control: must-revalidate, no-cache
Connection: keep-alive

{"uuids":["da769daee5996412c8f598155c002885","da769daee5996412c8f598155c0034b4","da769daee5996412c8f598155c00406f","da769daee5996412c8f598155c004c18","da769daee5996412c8f598155c00501a"]}
现在您可以编写自己的ID了。您还有更多的工作要做,编写和维护代码来完成这一切。但优点是您不需要更新函数,为每个文档更新执行一个Javascript函数(并可能在服务器上生成一个Javascript进程)


就个人而言,我会从Dominique的技术开始,只有在遇到性能问题时才会使用我的技术。

我更喜欢Dominic的答案,但为了完整性,您也可以从CouchDB预加载一组UUID,并自己组合它们。要获得一批五个:

$ curl -i example.iriscouch.com/_uuids?count=5
HTTP/1.1 200 OK
Server: CouchDB/1.2.0 (Erlang OTP/R15B)
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
ETag: "86908CQ9GCBC01P6VF18YM2P4"
Date: Sun, 12 Feb 2012 02:03:23 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 187
Cache-Control: must-revalidate, no-cache
Connection: keep-alive

{"uuids":["da769daee5996412c8f598155c002885","da769daee5996412c8f598155c0034b4","da769daee5996412c8f598155c00406f","da769daee5996412c8f598155c004c18","da769daee5996412c8f598155c00501a"]}
现在您可以编写自己的ID了。您还有更多的工作要做,编写和维护代码来完成这一切。但优点是您不需要更新函数,为每个文档更新执行一个Javascript函数(并可能在服务器上生成一个Javascript进程)


就我个人而言,我会从Dominique的技术开始,只有当您遇到性能问题时才会使用我的技术。

CouchDB可以通过以下方式为您生成UUID。但是,获取唯一的
\u id
s严重依赖于应用程序。CouchDB可以通过以下方式为您生成UUID。但是,获取唯一的
\u id
s严重依赖于应用程序。它是
req.id
还是
req.uuid
?我想不起来了。不确定,tbh,维基就是这么说的。如果我能核实正确答案,我可能会修改这一页。:)是
req.id
还是
req.uuid
?我想不起来了。不确定,tbh,维基就是这么说的。如果我能核实正确答案,我可能会修改这一页。:)