我正在使用撇号与撇号无头。我有一个名为bundles的撇号模块,我想根据自定义字段进行过滤。文档和它说我需要定义一个撇号 - 页面模块才能启用它。
这是我的配置:
'bundles': {
extend: 'apostrophe-pieces',
name: 'bundles',
restApi: {
maxPerPage: 10,
}
},
'bundles-pages': {
extend: 'apostrophe-pieces-pages',
piecesFilters: [
{
name: 'name'
},
{
name: 'slug'
}
]
},
如果我进行全文搜索:
/api/v1/bundles?page=1&search=text
它按预期工作,但如果我尝试过滤slu ::
/api/v1/bundles?page=1&slug=slug_value
它返回所有包而不是匹配的包。
答案 0 :(得分:1)
apostrophe-pieces-pages
不需要使游标过滤器方法可用于API和其他代码。我认为这种混淆来自于文档侧重于apostrophe-pieces-pages
这一事实,因为直接呈现完整页面是Apostrophe教程主要关注的主要系列的用例。
在您的帮助下,我们更新了apostrophe-headless
以支持一个选项,用于指定应为公共API标记为“安全”的过滤器,方法与撇号 - 页面相同:
'my-module': {
restApi: {
// We're assuming here that you have added fields
// called 'color' and 'brand' in your schema
safeFilters: [ 'slug', 'color', 'brand' ]
}
}
但是,对于任何热衷于查询slug属性的人来说,请记住,如果你正在进行API调用,那么使用记录的REST模式可以更好地通过_id
获取内容:< / p>
/api/v1/bundles/IDGOESHERE
答案 1 :(得分:0)
我遇到了同样的问题,发现解决方案是添加一个自定义过滤器,如此处记录的:https://apostrophecms.org/docs/tutorials/intermediate/cursors.html#custom-filters
我对该链接中显示的示例代码所做的唯一更改是在以self.and({...开始的那一行中的问题上。问题是,当没有文档匹配特定的子句时,the仍然返回初始光标其中包含所有文档,但实际上您需要它不返回任何内容。因此,代替:
self.and({marketId:market._id});
我做到了(有点hacky,但是你明白了)
self.and({marketId:market === undefined?9999999999:market._id});