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

