Keystone 6中GraphQL查询where子句报错:预期StringFilter类型
问题原因
Keystone 6的GraphQL API对过滤逻辑做了封装,所有字段的过滤条件都不会直接接收原始值,而是需要传入对应类型的过滤器对象。你报错是因为title字段是String类型,对应的过滤类型为StringFilter,必须指定具体的匹配操作符才能使用。
解决方案
把你的查询条件修改为嵌套结构,指定equals操作符表示精确匹配:
query { posts ( where: { title: { equals: "test" } } ) { title } }
拓展说明
StringFilter还支持其他常用操作符,可按需使用:
contains:匹配包含指定字符串的内容startsWith:匹配以指定字符串开头的内容endsWith:匹配以指定字符串结尾的内容not:对指定条件取反,示例如下:# 查询标题不等于test的内容 where: { title: { not: { equals: "test" } } }
该逻辑同样适用于Int、DateTime等其他类型的字段过滤,均需要指定对应操作符而非直接传值。
内容的提问来源于stack exchange,提问作者user36191
相关产品推荐
相关产品推荐

