如何禁用GraphiQL Playground中自动生成的过滤器?
如何禁用GraphiQL中自动生成的过滤器
这些name_contains、name_ends_with之类的自动过滤器,不是GraphiQL Playground自己生成的,而是后端GraphQL服务在定义Schema时自动加上的(比如用Prisma、Hasura、TypeGraphQL这类工具时的默认配置)。要清理界面,得从后端Schema层面调整:
1. 用Prisma + GraphQL的情况
- 在Prisma Schema里,对不需要过滤的字段,通过调整生成规则禁用:
model User { id Int @id @default(autoincrement()) name String // 默认会生成过滤字段,要禁用的话 // 要么在resolver里自定义查询,不暴露自动生成的过滤参数 // 要么用nexus-prisma时,指定允许过滤的字段: // t.crud.user({ filterableFields: ['id'] }) 只留id的过滤 } - 要是用
nexus-prisma定义查询,直接通过filterableFields限制允许的过滤字段,多余的就不会出现在Schema里。
2. 用Hasura的情况
- 进Hasura控制台,找到对应数据表的Permissions标签,在角色的
Select权限里,修改Filter选项,删掉不需要的自动过滤条件,或者只保留需要的字段过滤。 - 也可以直接在Data -> 对应表 -> Schema里,手动编辑GraphQL Schema,移除Input类型里多余的过滤字段。
3. 自定义GraphQL Schema的情况
自己写Schema时,只定义需要的过滤参数就行,别加那些额外的:
input UserFilterInput { id: Int name: String # 只保留精确匹配,不写contains/ends_with这类字段 } type Query { users(filter: UserFilterInput): [User] }
关键提醒
GraphiQL只是展示后端返回的Schema,没法通过自身设置隐藏这些过滤器,必须修改后端提供的Schema,才能让探索器界面不再显示这些多余选项。
内容的提问来源于stack exchange,提问作者A23149577
相关产品推荐
相关产品推荐

