为啥这个Schema为空.....如何在nestjs中设置@ApiProperty

Posted

技术标签:

【中文标题】为啥这个Schema为空.....如何在nestjs中设置@ApiProperty【英文标题】:Why this Schema Empty ..... How to setting @ApiProperty in nestjs为什么这个Schema为空.....如何在nestjs中设置@ApiProperty 【发布时间】:2021-10-09 05:21:01 【问题描述】:

我像这样在 Dto 中创建 @ApiProperty()

export class UpdateMeassageDto 

@ApiProperty()

message: 

    hash: string;


    created_at: Date;


    updated_at: Date;

然后它得到一个像这样的空结果

https://i.stack.imgur.com/kYGP5.jpg

【问题讨论】:

【参考方案1】:

您可以通过以下方式进行操作

import  ApiProperty, getSchemaPath  from '@nestjs/swagger';

export class MessageDto 
    @ApiProperty(
        type: 'string',
        example: 'hx1231',
    )
    hash: string;

    @ApiProperty(
        type: 'date',
        example: '2021-08-04T19:39:00.829Z',
    )
    created_at: Date;

    @ApiProperty(
        type: 'string',
        format: 'date-time',
        example: '2021-08-04T19:39:00.829Z',
    )
    updated_at: Date;


export class UpdateMessageDto 
    @ApiProperty(
        type: 'array',
        items:  $ref: getSchemaPath(MessageDto) ,
    )
    message: MessageDto;

每个属性都需要 ApiProperty。您可以使用 $ref 在另一个 DTO 中使用一个 DTO。在 DTO 中也可以使用 class-validator。

【讨论】:

【参考方案2】:

尝试将新类型定义为:

export class Message

    @ApiProperty()
    hash: string;

    @ApiProperty()
    created_at: Date;

    @ApiProperty()
    updated_at: Date;

并按如下方式更新您的 DTO:

export class UpdateMessageDto 

    @ApiProperty()
    message: Message


【讨论】:

以上是关于为啥这个Schema为空.....如何在nestjs中设置@ApiProperty的主要内容,如果未能解决你的问题,请参考以下文章

Nestjs Mongodb 总是返回空数组

使用 Schema First 方法和 NestJS 在 Mongoose 中填充查询

Schema graphql 错误给出“不能为不可为空的字段 Organisation.id 返回 null”为啥?

使用猫鼬和nestJS自动增加字段

如何使用来自@nestjs/mongoose 的@Prop 装饰器添加嵌套的对象数组

无法在运行时将 schema.gql 写入 Google 的 App Engine NestJS