请求修改GraphQL查询以支持多标签后缀匹配查询
修改GraphQL查询支持多标签后缀匹配
要让查询接收标签列表并返回所有匹配任意标签后缀的元素,需要调整变量类型并组合多个匹配条件,修改后的代码如下:
query AllElementsQuery($TagList: [String]!) { AllElements(filter: { Attribute: { Name: {eq: "Tag"}, Value: { OR: $TagList.map(tag => ({endsWith: tag})) } } }) { Element { Name, Type } } }
核心修改点:
- 变量类型变更:把原单个字符串参数
$Tag改为字符串数组$TagList: [String]!,!确保调用时必须传入非空的标签列表 - 多条件组合:在
Value的筛选逻辑中使用OR操作符,将列表中每个标签的endsWith条件组合,只要元素的Tag属性值后缀匹配列表中任意一项,就会被筛选出来
兼容写法(针对不支持动态map的GraphQL服务)
如果你的GraphQL服务不允许在查询中用map生成动态条件,可以手动构造OR条件数组:
query AllElementsQuery($Tag1: String!, $Tag2: String!) { AllElements(filter: { Attribute: { Name: {eq: "Tag"}, Value: { OR: [ {endsWith: $Tag1}, {endsWith: $Tag2} ] } } }) { Element { Name, Type } } }
这种写法需要提前定义固定数量的变量,适合标签数量较少且固定的场景。
内容的提问来源于stack exchange,提问作者Ahmad Hajou
相关产品推荐
相关产品推荐

