Orchard-Core中GraphiQL使用where、filter参数查询报错如何解决?
Orchard Core GraphQL 筛选报错解决步骤
- 第一步:开启字段的GraphQL筛选权限
Orchard Core默认不会给所有字段开放筛选能力,需要手动配置:进入站点后台 -> 内容 -> 内容定义 -> 找到「Product」内容类型 -> 编辑对应
description字段 -> 勾选「允许 GraphQL 筛选」选项,保存后重启站点,让GraphQL Schema更新生效。 - 第二步:按照Orchard Core规则编写筛选语句
Orchard Core的GraphQL筛选不会直接把字段暴露在productWhereInput根层级,所有自定义字段都会归属到对应的内容部分下,且需要指定筛选操作符,不能直接赋值。不要自行将参数替换为filter,Orchard Core官方GraphQL实现的筛选参数固定为where,替换后必然报未知参数错误。
假设你的description字段属于自定义的ProductPart,正确的查询写法如下:
常用筛选操作符包括:query MyQuery ($myDesc: String) { product (where: { productPart: { description: { _eq: $myDesc } } }) { productPart { description } } }_eq(等于)、_contains(包含)、_gt(大于)、_lt(小于)、_ne(不等于)等。 - 第三步:确认Schema结构避免盲猜字段
直接点击GraphiQL界面右侧的「Docs」按钮,搜索productWhereInput,就能看到当前可用的所有筛选字段、层级结构,按照Schema定义编写查询不会出现字段不存在的报错。 - 多条件筛选写法示例
如果需要同时加多个筛选条件,直接在对应层级并列即可,默认是逻辑与关系:query MyQuery ($myDesc: String, $minPrice: Float) { product (where: { productPart: { description: { _contains: $myDesc }, price: { _gt: $minPrice } } }) { productPart { description price } } }
内容的提问来源于stack exchange,提问作者Tiberius
相关产品推荐
相关产品推荐

