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

Gatsby GraphQL不同字段OR查询报错:Field "OR"未定义

解决Gatsby GraphQL查询中OR运算符的使用问题

嘿,我来帮你搞定这个问题!你的查询里有两个关键问题导致了报错,咱们一步步修正:

1. 逻辑运算符的名称用错了

你用了大写的OR,但Gatsby的FileFilterInput类型里定义的逻辑或运算符是小写的or——这就是报错Field "OR" is not defined by type FileFilterInput的直接原因。

虽然Sift本身支持$or语法,但Gatsby在GraphQL层做了适配,把Sift的操作符转换成了符合GraphQL命名规范的格式(去掉$,改用小写开头的命名)。

2. 字段匹配出现失误

你第二个条件里用atime字段去匹配文件路径,这明显不对——atime是文件的访问时间字段,不是存储路径的字段,应该还是用absolutePath来匹配第二个文件的路径。

修正后的正确查询

下面是调整后的可正常运行的GraphQL查询:

{
  allFile(filter: {
    or: [
      {absolutePath: { eq: "/Users/jesusyepes/Documents/webs/lego-gatsby/src/images/site-icon.jpg" }},
      {absolutePath: { eq: "/Users/jesusyepes/Documents/webs/lego-gatsby/src/images/site-icon2.jpg" }}
    ]
  }) {
    nodes {
      absolutePath
      id
    }
  }
}

额外拓展:复杂逻辑组合

如果需要更复杂的逻辑嵌套(比如or里套and),Gatsby的过滤器也完全支持,举个例子:

{
  allFile(filter: {
    or: [
      {
        and: [
          {extension: {eq: "jpg"}},
          {size: {gt: 1000}}
        ]
      },
      {absolutePath: {eq: "/path/to/specific/file.png"}}
    ]
  }) {
    nodes {
      absolutePath
      extension
      size
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:22:46