GraphQL“includeVariations”在AEMaaCS中使用过滤器返回空
在AEMaaCS中,当应用附加筛选器(例如,includeVariations:true)时,GraphQL查询中的_path参数返回空结果。 获取具有特定过滤器的内容片段变体时,会发生这种情况。 要解决此问题,请启用混合筛选并修改查询筛选器。
描述 description
环境
- 产品: Adobe Experience Manager (AEM) as a Cloud Service — 站点
- 实例: 开发
问题/症状
- 使用
includeVariations:true返回正确的结果。 - 添加筛选器(例如
_path)会导致空查询输出。 - 通过过滤器获取内容片段变量时发生
解决方法 resolution
要解决此问题,请执行以下步骤:
-
通过将
cfGlobalVersion=1属性添加到/content/dam启用混合筛选。 它提高了查询性能并修复了基于路径的过滤问题。 有关更多详细信息,请参阅使用AEM GraphQL混合筛选文档。 -
在应用于生产环境之前,请在较低的环境中测试该扩展。
-
修改查询过滤器。 在表达式中为
STARTS_WITH使用_path运算符,而不是EQUALS:code language-none [ { value: "/content/dam/content-fragments/sites/example-path/", _operator: STARTS_WITH } ]注意:如果启用了混合筛选,则此解决方法不起作用。
-
如果需要多个变体,请使用别名明确查询每个变体,如下所示:
code language-none query($path: String!) { standard: pageByPath(_path: $path, variation: "standard") { item { _path title _variation } } premier: pageByPath(_path: $path, variation: "premier") { item { _path title _variation } } } -
要优化查询设计,如果只需要一个特定变体,请使用变体参数直接在查询中指定它,而不是依赖于
includeVariations: true。 -
检查关联内容模型缺失的无效内容片段。
-
清理无效片段,或将它们与相应的模型关联以使其有效。
-
在启用混合筛选或进行更改后,请验证创作实例和发布实例上的日志,以确认设置应用正确。
-
在只需要一个片段时谨慎使用列表查询;首选定向查询(例如,
pageByPath)。
相关阅读
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f