Apollo 服务器不在子对象中从 Mongoose 序列化虚拟 属性

Apollo server does not serialize virtual property from Mongoose in sub objects

这是我的打字稿对象(简体):

@ObjectType()
export default class Game {
  @Field(() => ID)
  id?: string

  @arrayProp({items: Player})
  @Field(() => [Player])
  players: Player[] = []
}

@ObjectType()
export class Player {
  @Field(() => ID)
  id?: string
}

它使用 type-graphql 生成此模式:

type Game {
  id: ID!
  players: [Player!]!
}
type Player {
  id: ID!
}

我使用解析器查询用户的游戏:

@Resolver(() => User)
export class UserGameResolver {
  @FieldResolver(() => [Game])
  async ongoingGames(@Ctx('userId') userId: string) {
    return GameModel.find({'players.userId': userId, setup: null})
  }
}

它产生了这个错误:"GraphQL error: Cannot return null for non-nullable field Player.id"

我已经知道的:

如果有人知道这里发生了什么,那就太好了!

你应该尝试使用 _id

如果你真的想使用 id(虚拟),那么你需要使用 .toJson.toObject 选项 { virtuals: true }

return GameModel.find({'players.userId': userId, setup: null}).toObject({ virtuals: true });