You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GraphQL嵌套AND与OR运算符过滤数据报错求助

GraphQL嵌套AND/OR过滤查询错误解决方法

你需要实现按country_id过滤数据,同时让search值匹配id或name字段,但原查询报错提示Field "or" is not defined by type YOUR_TYPE,核心问题是查询结构不符合后端GraphQL Schema的过滤规则,另外原查询里还有个小语法错误。

修正后的查询方案

方案1:标准嵌套逻辑结构

如果你的后端支持逻辑运算符嵌套(比如Prisma、Hasura这类常见实现),调整后的查询如下,注意去掉$ search里的空格:

query books($search: String, $country_id: Int) {
  books(where: {
    and: [
      { country_id: { eq: $country_id } },
      {
        or: [
          { id: { like: $search } },
          { name: { like: $search } }
        ]
      }
    ]
  }) {
    # 必须指定要返回的字段,示例如下
    id
    name
    country_id
  }
}

方案2:简化同级逻辑结构

如果后端Schema要求or与其他过滤字段同级(无需嵌套在and数组里),可以用更简洁的写法:

query books($search: String, $country_id: Int) {
  books(where: {
    country_id: { eq: $country_id },
    or: [
      { id: { like: $search } },
      { name: { like: $search } }
    ]
  }) {
    id
    name
    country_id
  }
}

关键注意事项

  1. 语法错误修复:原查询中$ search多了一个空格,会导致变量识别失败,必须改成$search。
  2. Schema兼容性:确保你的GraphQL Schema中的过滤类型(比如BookWhereInput)确实定义了and和or字段。如果Schema不支持这些逻辑运算符,需要后端调整Schema配置,或者改用后端支持的过滤方式。

内容的提问来源于stack exchange,提问作者Steelone D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:32:51