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

GraphQL嵌套解析器处理nullable关联读null的id属性报错如何解决

问题原因

当EaUser不存在trainingLocation关联时,parent.relationships.trainingLocation.data 为null,你原有逻辑的判断条件Object.keys(parent.relationships.trainingLocation).length === 0只能覆盖trainingLocation为空对象的场景,无法覆盖trainingLocation对象存在但data为null的场景,此时直接访问.id就会抛出空指针错误。

修复后的解析器代码

如果你的运行环境支持ES2020+的可选链语法,可以直接用以下写法:

EaUser: {
  trainingLocation: async parent => {
    const rel = parent.relationships?.trainingLocation
    if (!rel?.data) return null
    return await getTrainingLocation(rel.data.id)
  }
}

如果不支持可选链,替换为逐层判断的兼容写法:

EaUser: {
  trainingLocation: async parent => {
    if (
      !parent.relationships ||
      !parent.relationships.trainingLocation ||
      !parent.relationships.trainingLocation.data
    ) {
      return null
    }
    return await getTrainingLocation(parent.relationships.trainingLocation.data.id)
  }
}

修改后无关联的场景会直接返回null,符合GraphQL的类型定义要求,不会再抛出错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:45:05