mongoose Type-graphql typegoose无法为不可为空的字段返回nullUserEntity.id

yqyhoc1h  于 2023-04-21  发布在  Go
关注(0)|答案(1)|浏览(110)

大家好!😊

import { modelOptions, prop } from '@typegoose/typegoose';
import mongoose from 'mongoose';
import { Field, ID, ObjectType } from 'type-graphql';

@ObjectType()
@modelOptions({ schemaOptions: { versionKey: false } })
export class UserEntity {
  @Field()
  @prop()
  public email?: string;
  @Field()
  @prop()
  public firstName?: string;
  @Field(() => ID)
  @prop()
  public id: mongoose.Types.ObjectId;
  @Field()
  @prop()
  public lastName?: string;
}
mutation Register {
  register(password: "password1234", email: "mail", lastName: "lasr", firstName: "first") {
    id
  }
}

我使用type-graphltypegoose来提供一个UserEntity作为变异的结果。在数据库中创建一个用户后,文档中有一个autogenerated _id,正如预期的那样。create函数的结果有一个id属性,其字符串表示为id。变异工作正常,但如果我查询id,我会得到以下异常:
Cannot return null for non-nullable field UserEntity.id.
我该如何解决这个问题?我必须使用什么装饰器才能看到正确的id

brqmpdu1

brqmpdu11#

我将id重命名为_id,并从属性中删除了@prop()。这样就可以从数据库中访问生成的_id

import { modelOptions, prop } from '@typegoose/typegoose';
import mongoose from 'mongoose';
import { Field, ID, ObjectType } from 'type-graphql';

@ObjectType()
@modelOptions({
  schemaOptions: {
    versionKey: false,
  },
})
export class UserEntity {
  @Field(() => ID)
  public _id: mongoose.Types.ObjectId;
  @Field()
  @prop()
  public email: string;
  @Field()
  @prop()
  public firstName: string;
  @Field()
  @prop()
  public lastName: string;
}

相关问题