【发布时间】:2021-07-13 18:06:32
【问题描述】:
我基本上想要做的是将请求中的日期字符串解析为 Date 对象,例如 question。
但是,这不是我的用例,因为在我的情况下不需要日期。因此,如果我使用上述问题的解决方案,它会以 400 响应:due must be a Date instance。
这是我的 DTO:
export class CreateTaskDto {
@IsDefined()
@IsString()
readonly name: string;
@IsDefined()
@IsBoolean()
readonly done: boolean;
@Type(() => Date)
@IsDate()
readonly due: Date;
}
然后在我的控制器中:
@Post('tasks')
async create(
@Body(new ValidationPipe({transform: true}))
createTaskDto: CreateTaskDto
): Promise<TaskResponse> {
const task = await this.taskService.create(createTaskDto);
return this.taskService.fromDb(task);
}
使用此有效负载的发布请求工作正常:
{
"name":"task 1",
"done":false,
"due": "2021-07-13T17:30:11.517Z"
}
但是这个请求失败了:
{
"name":"task 2",
"done":false
}
{
"statusCode":400
"message":["due must be a Date instance"],
"error":"Bad Request"
}
如果没有日期,是否有可能告诉nestjs忽略转换?
【问题讨论】:
-
我可能在这里遗漏了一些东西,但您是否尝试将
due字段设为可选? -- 例如,Date | undefined -
您应该在属性中添加
@IsOptional()。让我知道这是否有效 -
@JayMcDoniel 是的,它有效。我不知道那个装饰器。
标签: nestjs