我正在使用 Nest 的CLI 插件为我的文档自动注释内容。
问题是,插件不仅加载了我的模块导入的实体,还将关系中引用的所有实体加载到 Swagger UI 中。
例如,我的 Cidades 模块使用以下具有 3 个关系的实体:
@Index('cidades_pkey', ['idCidade'], { unique: true })
@Entity('cidades', { schema: 'public' })
export class Cidades {
@PrimaryGeneratedColumn({ type: 'bigint', name: 'id_cidade' })
idCidade: string
@Column('text', { name: 'nome' })
nome: string
// Entities from these relations are displayed in the Schemas of Swagger UI
@OneToMany(() => Grupos, (grupos) => grupos.idCidade)
grupos: Grupos[]
@OneToMany(() => Instituicoes, (instituicoes) => instituicoes.idCidade)
instituicoes: Instituicoes[]
@OneToMany(() => Usuarios, (usuarios) => usuarios.idCidade)
usuarios: Usuarios[]
}
这些关系中的实体也显示在我的Schemas上。
我只想显示 Cidades,即我的模块导入的实体。我尝试使用 @ApiHideProperty() 装饰器来隐藏关系,但没有奏效。这种行为有什么解决方法吗?
编辑: 我找到了一个权宜之计的解决方案。我的 CRUD 方法正在返回实体,例如 createCidade(): Promise<Cidade> {}
我实现了一个 ResponseDto(基于 JSend 标准)。它的属性之一包含创建的资源 Cidade 之类的数据。
我的方法没有返回实体,而是返回此 DTO。这从 Swagger UI 的模式中删除了所有不需要的实体,并将它们替换为 ResponseDTO。