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

如何在GraphQL中正确查询可为null的字段及满足_gt条件的记录

问题根源

你遇到的报错是因为绝大多数支持时间类型筛选的GraphQL接口,会校验时间字段筛选值的格式,直接写endDate: null会被识别为不符合时间格式要求的非法值,因此抛出Invalid format, expected a timestamp or an ISO date错误。

正确查询写法

根据你使用的后端服务不同,对应替换空值筛选逻辑即可,以下是两种最常见场景的正确写法:

适用于Strapi v3/Hasura等旧版本GraphQL接口

使用字段后缀_null作为空值筛选标识:

query GetBanner {
  foo(
    sort: "posicao:asc", 
    where: { 
      startDate_lt: "2021-10-13T21:13:16.510Z", 
      _or: [
        { endDate_gt: "2021-10-13T21:13:16.510Z"},
        { endDate_null: true }
      ]
    }
  ) {
    id
    created_at
    updated_at
    startDate
    endDate
  }
}

适用于Strapi v4等新版本GraphQL接口

使用嵌套的null操作符实现空值筛选:

query GetBanner {
  foo(
    sort: ["posicao:asc"], 
    filters: { 
      startDate: { lt: "2021-10-13T21:13:16.510Z" },
      _or: [
        { endDate: { gt: "2021-10-13T21:13:16.510Z" } },
        { endDate: { null: true } }
      ]
    }
  ) {
    id
    createdAt
    updatedAt
    startDate
    endDate
  }
}
补充说明
  • 若你使用的是其他后端服务,可直接查阅对应平台的GraphQL筛选文档,找到空值判断的专用操作符即可,不要直接将null作为时间字段的筛选值传入。
  • 部分平台的空值筛选操作符为_is_null,写法为{ endDate: { _is_null: true } },也可实现相同效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:18:03