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

Typegoose+TypeGraphQL场景下Field Resolver返回undefined问题求助

问题根因与解决方案

你遇到的问题是TypeGraphQL FieldResolver 上下文绑定 + Mongoose 文档实例结构的共性问题,按以下步骤排查即可解决:

  1. 禁止用箭头函数定义FieldResolver方法
    箭头函数会绑定上层Resolver类的this上下文,无法指向当前返回的实体实例,属于高频踩坑点:
    错误写法:
@FieldResolver()
workoutAmount = () => {
  return this.workouts.length // this指向Resolver类实例,无workouts字段
}

正确写法:

@FieldResolver()
workoutAmount() {
  // 此时this指向返回的实体实例
}
  1. 适配Mongoose文档实例的字段存储规则
    Typegoose返回的是Mongoose Document实例,所有字段默认存储在实例的_doc属性下,控制台打印时会自动展开_doc的属性到外层,所以你能看到workouts字段但直接访问返回undefined,有两种解决方式:
  • 直接访问_doc下的字段:
@FieldResolver()
workoutAmount() {
  return this._doc.workouts.length
}
  • 开启simpleResolvers配置,TypeGraphQL会自动适配Mongoose文档结构:
// 在你的实体类的@ObjectType装饰器加配置
@ObjectType({ simpleResolvers: true })
export class YourEntity {
  // 原有字段定义
  @prop()
  @Field(type => [Workout])
  workouts: Workout[]
}
  1. 检查Resolver装饰器配置
    确保你的Resolver类装饰器指定了对应的实体类:
@Resolver(of => YourEntity)
export class YourEntityResolver {
  // 你的Resolver逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:36:06