首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法将缺省值设置为缺少/可选的JSON属性?

有没有办法将缺省值设置为缺少/可选的JSON属性?
EN

Stack Overflow用户
提问于 2019-01-04 02:25:04
回答 2查看 5.4K关注 0票数 2

我使用NodeJs/NestJs来构建RESTful服务。我创建了一些对象来匹配请求JSON。在这些对象中有一些可选的属性,但如果客户端不通过JSON发送它们,我希望将它们设置为默认值。

实现这一目标的最佳方法是什么?

这是我与JSON匹配的DTO。

代码语言:javascript
复制
import { IsDefined, IsNumber, Min } from 'class-validator';
import { ApiModelProperty, ApiModelPropertyOptional } from '@nestjs/swagger';

export class RequestDto {
    @IsDefined()
    @IsNumber()
    @Min(0)
    @ApiModelProperty({description: 'The current age.'})
    public CurrentAge: number;

    @ApiModelPropertyOptional({description: 'The existing saving amount.'})
    public ExistingSavingAmount: number = 0;
}

这是我的NestJs控制器

代码语言:javascript
复制
import { Controller, Post, Body, Param } from '@nestjs/common';
import { RequestDto } from './Dto/Request.Dto';
import { ApiResponse, ApiOperation } from '@nestjs/swagger';

@Controller('mycontroller')
export class MyController {
    @Post('MyEndPoint')
    @ApiOperation({ title: 'Do something' })
    @ApiResponse({ status: 201, description: 'Something is done' })
    public doSomething(@Body() request: RequestDto) {
        // do more jobs
    }
}

我启动该服务,并将JSON发布到我的终点

代码语言:javascript
复制
{
    "CurrentAge": 40,
}

在我的控制器中,我看到ExistingSavingAmount是空的,而不是值为0。但是如果我直接实例化RequestDto,我可以看到ExistingSavingAmount的值是0。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54027807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档