url-rewriting - CouchDB:使用重写查询带有键的 View 时遇到问题

标签 url-rewriting couchdb

在 CouchDB 中,我创建了一个名为“zip”的 View , map 如下所示;

function (doc) {
    if(doc.type == 'zip') {
       emit(doc.zip_code, doc)
    }
}

然后我添加了一堆与邮政编码相关的文档,示例文档如下所示;

{
   "_id": "zip/48114",
   "_rev": "1-990b2c4f682ed0b6a27e2fa0c066c93d",
   "zip_code": 48114,
   "state": null,
   "county": null,
   "rep_code1": "INTL2",
   "rep_code2": "MI1",
   "type": "zip"
}

现在,当我像这样直接查询 View 时,

http://localhost:5984/partslocator/_design/partslocator/_view/zip?key=48114

我得到了我所期待的行;

{
    "total_rows": 41683,
    "offset": 20391,
    "rows": [
        {
            "id": "zip/48114",
            "key": 48114,
            "value": {
                "_id": "zip/48114",
                "_rev": "1-990b2c4f682ed0b6a27e2fa0c066c93d",
                "zip_code": 48114,
                "state": null,
                "county": null,
                "rep_code1": "INTL2",
                "rep_code2": "MI1",
                "type": "zip"
            }
        }
    ]
}

然后我设置了一个虚拟主机并正在使用重写,我对“zip”的重写如下所示。

{from: "/zip/:zip", to: "_view/zip",  query: {"key": ":zip"}}

对我来说,这似乎应该是正确的,但是当我尝试使用重写 URL 查询 View 时,它总是返回零行。

重写网址:

http://partslocatordev.com:5984/zip/48114

回复:

{
    "total_rows": 41683,
    "offset": 41683,
    "rows": []
}

我在这里遗漏了什么吗?

注意:我以与其他 View 相同的方式使用重写,并且它们有效,但我无法弄清楚为什么这个特别不能。

最佳答案

重写器可能正在查询 zip?key=":zip" 而不是 zip?key=:zip。您可以在重写器中使用 formats 字段来命名不同参数的输入方式。在这种情况下,请尝试以下操作:

{
    from: "/zip/:zip", 
    to: "_view/zip",  
    query: {"key": ":zip"},
    formats: {
        "zip": "int"
    }
}

或者,在 map 函数中,发出字符串作为 ID 而不是数字,如下所示:

function (doc) {
    if(doc.type == 'zip') {
       emit(String(doc.zip_code), doc)
    }
}

这将处理邮政编码不是整数的情况,例如在英国。

关于url-rewriting - CouchDB:使用重写查询带有键的 View 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17531246/

相关文章:

javascript - 405 不允许从 javascript 获取 couchdb 文档的方法

.htaccess - 服务器忽略子目录 htaccess 文件,直接进入根 htaccess

couchdb - 复制的 CouchDB 数据库中的 data_size 不同

Node.js + Express : rewrite url path

.htaccess - 隐藏 URL 的中间部分

curl - 将 CURL 与 oauth 结合使用用于桌面沙发

node.js - 查找并返回特定字段

android - ionic 框架同步数据和离线工作

windows - 在 IIS 上删除 Codeigniter 的 index.php?

url-rewriting - URLRewrite - 将 .do 添加到传入请求 - 但过滤器执行引发异常