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
相关产品推荐
相关产品推荐

