带有实体关系的nestjs graphql - 如何装饰它?

Posted

技术标签:

【中文标题】带有实体关系的nestjs graphql - 如何装饰它?【英文标题】:nestjs graphql with entity relations - how to decorate it? 【发布时间】:2021-04-11 09:51:44 【问题描述】:

当我有关系时,我在“装饰”类时遇到问题,这些类应该用作 ObejctType 和 InputType。应该可以在其他类中使用关系类

例如有地址的客户,有地址的用户

@ObjectType()
@InputType()
export class Address 
  @Field()
  street: string;

  @Field()
  city: string;



@ObjectType()
@InputType()
export class Customer 
  @Field()
  name: string;

  @Field(() => Address)
  address: Address;



@ObjectType()
@InputType()
export class User 
  @Field()
  name: string;

  @Field(() => Address)
  address: Address;


我也想使用 Customer 和 User 作为 Mutations 的输入参数。但我没有成功。我尝试了 InputType 和 ObjectType 的“isAbstract”选项的变体,但我对这个解决方案不满意。

谁能给我一个提示如何做到这一点。

【问题讨论】:

【参考方案1】:

如果遇到冲突错误,则需要明确指定 ObjectTypes 和 InputTypes 的名称。

所以试试这样的:

@ObjectType("AddressType")
@InputType("AddressInput")
export class Address 
  @Field()
  street: string;

  @Field()
  city: string;

看到这个Use the same class as Input and Object type in GraphQL in NestJS。

【讨论】:

感谢您的回答。是的 InputType 和 ObjectType 的“命名”有效。

以上是关于带有实体关系的nestjs graphql - 如何装饰它?的主要内容,如果未能解决你的问题,请参考以下文章

NestJS + Typeorm + Graphql:嵌套关系中 DTO 的正确设计模式

将 TypeORM 实体模型类与 NestJS-GraphQL 模式类型结合使用好吗?

NestJS 中与 GraphQL 的 Prisma 自关系

如何在 neo4j-graphql-js 端点中使用带有 nestjs 框架的拦截器?

错误:使用 Nestjs + Graphql + Typeorm 时无法确定 GraphQL 输入类型

如何在带有typeorm的nestjs项目中使用外部实体?