gpt4 book ai didi

couchdb - 通过重写 URL 访问 Couchdb 数据库 URL,带有查询参数

转载 作者:行者123 更新时间:2023-12-04 01:03:13 28 4
gpt4 key购买 nike

我的网站用完了 Couch 数据库实例,所以我的虚拟主机配置为指向 /dbname/_design/app/_rewrite .

我希望能够从 Web 浏览器访问索引页面,同时仍然通过 Ajax 访问 Couch DB API,因此我在我的 rewrites 中设置了一对重写规则 field :

[ { "from": "/dbname/*", "to: ../../*" },
{ "from": "/*", "to: *" } ]

这些规则很好用:我可以通过 /dbname/docname 访问单个文档。 URL,我可以将我的网络浏览器指向站点的根目录并以这种方式访问​​我的附件。

我现在想访问数据库本身的信息,以便传递 since _changes 的参数API。
  • /dbname/工作正常
  • /dbname/?name=value没有正确重定向。在 Couch DB 日志中,我看到像 'GET' /dbname/_design/..?name=value 404 这样的行,而我希望看到 'GET' /dbname/?name=value 200 .

  • IE 中的 Ajax 需要第二种情况,其中 jquery.couch.js代码添加了一个虚假的查询字符串以避免缓存。

    如何表述我的重写规则以便 Couch DB 重写 /dbname/?name=value正确吗?

    编辑:澄清一下,只要 URL 中最后一个/之后有内容,查询字符串就可以正常工作。
  • /dbname/docname?rev=xxx作品
  • /dbname/_changes?since=1作品
  • /dbname/?_=dummy不工作;它重写为 /dbname/_design/..?_=dummy
  • 最佳答案

    我试图复制您的问题,但它正在工作。下面是我的互动。 (注意,我使用 IP 地址 127.0.0.1:5984 以确保没有虚拟主机/重写问题,然后我通过 localhost:5984 访问“生产”站点。

    有一个错误 似乎查询参数被附加到以“..”结尾的重写中。而不是重写为 ../?key=val它写入..?key=val CouchDB 不解析。

    我认为没有必要使用参数查询数据库 URL。因此,一种解决方法是始终确保您永远不会这样做。 (例如,如果您盲目地将无操作参数附加到所有查询以简化代码,则必须对其进行更改。)

    另一种解决方法是启用对根 CouchDB URL 的重写。这需要设置 /_config/httpd/secure_rewritesfalse .

    { "from":"/api/*", "to":"../../../*" }

    现在可以查询 http://localhost:5984/api/x?key=valhttp://localhost:5984/api/x/_changes?since=5 . (您不能使用参数查询根 URL——它仍然是错误,但在一个较少流量的地方。)

    以下是初始终端 session :
    $ mkdir t
    $ cd t
    $ curl -XDELETE 127.0.0.1:5984/x
    {"ok":true}
    $ curl -XPUT 127.0.0.1:5984/x
    {"ok":true}
    $ curl 127.0.0.1:5984
    {"couchdb":"Welcome","version":"1.0.1"}

    $ echo -n _design/test > _id
    $ mkdir shows
    $ echo 'function() { return "hello world!\n" }' > shows/hello.js
    $ cat > rewrites.json
    [ { "from":"/db/*", "to":"../../*" }
    , { "from":"/*" , "to":"*"}
    ]

    $ echo '{}' > .couchapprc
    $ couchapp push http://127.0.0.1:5984/x
    $ curl -XPUT http://127.0.0.1:5984/_config/vhosts/localhost:5984 -d '"/x/_design/test/_rewrite"'
    "/x/_design/test/_rewrite"

    $ curl localhost:5984 # This is the design document.
    {"_id":"_design/test","_rev":"1-e523efd669aa5375e711f8e4b764da7a","shows":{"hello":"function() { return \"hello world!\\n\" }"},"couchapp":{"signatures":{},"objects":{},"manifest":["rewrites.json","shows/","shows/hello.js"]},"rewrites":[{"to":"../../*","from":"/db/*"},{"to":"*","from":"/*"}]}
    $ curl localhost:5984/_show/hello
    hello world!

    $ curl localhost:5984/db # This is the DB.
    {"db_name":"x","doc_count":1,"doc_del_count":0,"update_seq":1,"purge_seq":0,"compact_running":false,"disk_size":4185,"instance_start_time":"1298269455135987","disk_format_version":5,"committed_update_seq":1}
    $ curl localhost:5984/db/_changes
    {"results":[
    {"seq":1,"id":"_design/test","changes":[{"rev":"1-e523efd669aa5375e711f8e4b764da7a"}]}
    ],
    "last_seq":1}

    $ curl localhost:5984/db/_changes?since=1 # Parameters accepted!
    {"results":[

    ],
    "last_seq":1}

    关于couchdb - 通过重写 URL 访问 Couchdb 数据库 URL,带有查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5059499/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com