在研究NestJS时遇到问题,但我具有以下DTO:
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
是searchNotesDto
中的字符串,并且我希望使用Date
对象,有没有一种方法可以将那些字段隐式转换为Date
?
@Query
将序列化所有属性以键入string
,因为根据HTTP请求,这就是querystring
的工作方式。您将需要使用Pipe
将查询转换为正确的数据形状。
export class SearchNotePipe implements PipeTransform {
transform(value: any, metadata: ArgumentMetadata) {
// value will be your `searchNotesDto`
const notesDto = new SearchNotesDto();
// do your transformation here
return notesDto;
}
}