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

能否在GraphQL过滤器中使用三元运算符?报错问题求助

不能在GraphQL过滤器中直接使用三元运算符

GraphQL的查询语法不支持在查询内部编写三元运算符这类条件表达式,你遇到的GraphQLError: Syntax Error: Expected Name, found "="错误,就是因为在过滤器里写了$env == "production"这种逻辑代码,GraphQL解析器无法识别这种写法。

解决思路是把条件判断逻辑移到查询外部处理完成后,再将结果作为变量传入查询:

  • 修改查询定义:将原来的$env变量替换为$status,类型定义为字符串数组:
query GetQuery($status: [String!]) {
    category (filter: { page: { status: { _in: $status }}}) {
        // 填写你需要查询的字段
    }
}
  • 在客户端计算变量值:根据环境变量判断出要传入的status数组,再传给查询:
// 示例:JavaScript环境中处理变量
const env = process.env.NODE_ENV; // 替换为你的环境变量来源
const status = env === "production" ? ["published"] : ["published", "draft"];

// 调用GraphQL查询时,将status作为变量传入

如果你的GraphQL服务端支持自定义逻辑(比如Hasura的会话变量、权限规则),也可以在服务端层面实现这个判断,但对于普通场景,最直接高效的方式就是在客户端提前处理好变量值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:48:15