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

GraphQL 16.5.0中如何在where语句添加OR条件?React-TypeScript求助

解决GraphQL OR条件查询不生效的问题

常见排查与修复方案

  • 修正过滤操作符语法
    多数GraphQL后端(如Prisma、Hasura)的包含查询采用嵌套对象写法,而非字段名_contains的格式。调整后的正确查询示例:

    articles(where: { 
      OR: [
        { title: { contains: "search_text", mode: "insensitive" } },
        { content: { contains: "search_text", mode: "insensitive" } }
      ]
    }) {
      title
      content
    }
    

    注意:部分后端要求OR为大写;如果你的后端确实支持字段名_contains写法,需确认字段名大小写、拼写完全匹配数据库字段。

  • 确认变量传递正确性
    若使用变量传入搜索文本而非硬编码,要保证变量传递逻辑正确,示例如下:

    query GetArticles($searchText: String!) {
      articles(where: { 
        OR: [
          { title: { contains: $searchText } },
          { content: { contains: $searchText } }
        ]
      }) {
        title
        content
      }
    }
    

    在React组件调用时,需同步传入对应变量参数,避免字符串拼接引发语法错误。

  • 检查后端OR条件支持
    部分后端需显式启用OR过滤权限,比如Hasura要在数据表权限中开启对应过滤规则,Prisma需确保模型字段配置了可过滤属性。若后端不支持OR条件,可分两次查询后在前端合并结果。

  • 校验TypeScript类型定义
    若出现TypeScript报错,需确认GraphQL生成的类型定义中,Where类型包含OR字段,且过滤条件类型匹配。可重新运行graphql-codegen生成最新类型文件。


内容的提问来源于stack exchange,提问作者Mohammed Saad Abban

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:42:04