Node.js NestJS将@Query()反序列化为具有复杂类型的DTO
在研究NestJS时,我遇到了一个问题,我有以下DTO:Node.js NestJS将@Query()反序列化为具有复杂类型的DTO,node.js,typescript,query-string,nestjs,dto,Node.js,Typescript,Query String,Nestjs,Dto,在研究NestJS时,我遇到了一个问题,我有以下DTO: export default class SearchNotesDto { query: string; createdAfter: Date; createdBefore: Date; } 当向端点发出get请求时,我希望获取该端点,该端点由控制器中的以下函数处理: @Get() getNotes(@Query() searchNotesDto: SearchNotesDto): Note[] { if (Object
export default class SearchNotesDto {
query: string;
createdAfter: Date;
createdBefore: Date;
}
当向端点发出get
请求时,我希望获取该端点,该端点由控制器中的以下函数处理:
@Get()
getNotes(@Query() searchNotesDto: SearchNotesDto): Note[] {
if (Object.keys(searchNotesDto).length) {
return this.notesService.searchNotes(searchNotesDto);
}
return this.notesService.getAllNotes();
}
我的问题是
createdAfter
和createdBefore
是SearchNotesTo
中的字符串,我希望使用Date
对象,是否有办法将这些字段隐式转换为日期?@Query
将所有属性序列化为字符串类型,因为这就是查询字符串在HTTP请求方面的工作方式。您需要使用管道
将查询转换为正确的数据形状
导出类SearchNotePipe实现PipeTransform{
转换(值:任意,元数据:ArgumentMetadata){
//值将是您的'SearchNotesTo'`
const notesDto=新的SearchNotesDto();
//在这里进行转换
回条收件人;
}
}
@Query
将所有属性序列化为类型字符串
,因为这就是查询字符串在HTTP请求中的工作方式。您需要使用管道
将查询转换为正确的数据形状
导出类SearchNotePipe实现PipeTransform{
转换(值:任意,元数据:ArgumentMetadata){
//值将是您的'SearchNotesTo'`
const notesDto=新的SearchNotesDto();
//在这里进行转换
回条收件人;
}
}
我知道查询字符串是一个字符串,我只是在寻找一种处理序列化的干净方法,管道就是这种方法-谢谢!我知道查询字符串是一个字符串,我只是在寻找一种干净的方法来处理序列化,管道就是这种方法-谢谢!