Filter CouchDB\u-API过滤器

Filter CouchDB\u-API过滤器,filter,couchdb,Filter,Couchdb,我试图在CouchDB 2.1.1上获得一个经过过滤的_changes-API流,但遇到了一些问题。 我只想通过包含值为“article”的字段“type”的changes提要接收文档 根据法律,这样的事情应该会起作用: function (doc, req) { if (doc.type && doc.type == 'article') { return true; } return false; } 我使用Fauxton在名为filters的设计文档中

我试图在CouchDB 2.1.1上获得一个经过过滤的_changes-API流,但遇到了一些问题。 我只想通过包含值为“article”的字段“type”的changes提要接收文档

根据法律,这样的事情应该会起作用:

function (doc, req) {
  if (doc.type && doc.type == 'article') {
    return true;
  }
  return false;
}
我使用Fauxton在名为
filters
的设计文档中,在名为
type\u article
的新视图中创建了上述函数。当我点击视图时,我没有看到任何结果

现在,我想使用过滤器作为GET参数从DB检索过滤后的更改提要:
localhost:5984/my\u database/\u changes?filter=filters/type\u article

CouchDB的反应是
{“错误”:“未找到”,“原因”:“缺少json键:筛选器”}

你知道如何让过滤器功能正常工作吗


PS:我还尝试使用'emit()'函数,而不是返回
true
false
,这返回了预期的结果,但在尝试查询
\u changes
时,出现了相同的错误

我发现了问题。在Fauxton中使用
设计文档
菜单项旁边的小+符号创建视图时,只能创建视图。视图与过滤器不同。 要创建与_changes提要一起使用的过滤器,请单击“创建文档”,然后创建如下文档:

{
  "_id": "_design/filters",
  "filters": {
    "type_article": "function (doc, req) {\n  if (doc.type && doc.type == \"article\") {\n    return true;\n  } else { \n return false; \n}\n}"
  }
}
{"views":
    {"type_article":
        {"map":
            "function(doc) {
                if (doc.type && doc.type == 'article') {
                    emit(doc.name);
                }
            }"
        }
    }
}

这将创建一个名为
过滤器
的新设计文档,其中包含一个函数
type\u article

只需注意,您实际上可以使用视图作为
更改的过滤器。在这种情况下,如果map函数为其发出至少一条记录,则已计数的文档将被传递

例如,如果设计文档(称为“ddoc”)的外观如下所示:

{
  "_id": "_design/filters",
  "filters": {
    "type_article": "function (doc, req) {\n  if (doc.type && doc.type == \"article\") {\n    return true;\n  } else { \n return false; \n}\n}"
  }
}
{"views":
    {"type_article":
        {"map":
            "function(doc) {
                if (doc.type && doc.type == 'article') {
                    emit(doc.name);
                }
            }"
        }
    }
}
然后查询看起来像
localhost:5984/my\u database/\u changes?filter=\u view&view=ddoc/type\u article
。请注意,属性
过滤器
缺少
设计前缀和关键字
\u视图
。以下是相关文档部分的链接:


这里唯一需要注意的是,该过滤器实际上没有使用内置的视图索引,因此没有比普通过滤器功能更快。

非常有趣!谢谢分享!