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

如何在GraphQL中筛选嵌套对象数组(排除type为null的项)

GraphQL筛选contactInfo中type不为null的条目

原始接口返回数据

"contactInfo": [
  {
    "type": "phone",
    "data": "123456789"
  },
  {
    "type": null,
    "data": ""
  },
  {
    "type": "phone",
    "data": "1235553456"
  }
]

已实现的筛选逻辑

之前使用以下查询可以正确筛选出type为null的条目:

contactInfo(type: null ) {
  type
  data
}

需求:筛选type不为null的条目

要得到仅包含type非null的contactInfo数组,可根据后端GraphQL API的支持情况选择以下方案:


方案1:使用后端支持的非空过滤参数

如果你的GraphQL后端实现了不等于的过滤规则(不同服务语法可能有差异),最直接的方式是使用对应的参数:

  • 若后端支持_not后缀(比如Hasura):
contactInfo(type_not: null) {
  type
  data
}
  • 若后端采用标准比较运算符(比如Prisma):
contactInfo(type: { ne: null }) {
  type
  data
}

方案2:枚举已知非空类型(仅适用于类型固定场景)

如果type的可选非空值是固定的(比如只有"phone"),可以直接指定类型值筛选:

contactInfo(type: "phone") {
  type
  data
}

如果有多种非空类型,可使用_in参数传入类型列表:

contactInfo(type_in: ["phone", "email"]) {
  type
  data
}

方案3:前端本地过滤(后端不支持非空筛选时)

如果后端未提供相关过滤能力,只能在获取全部数据后,在前端进行本地筛选:

// 假设接口返回数据存储在response变量中
const filteredContacts = response.contactInfo.filter(item => item.type !== null);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:05:13