Nest JS десериализация @Query () в DTO со сложными типами - PullRequest
0 голосов
/ 09 февраля 2020

Во время изучения Nest JS Я столкнулся с проблемой, у меня есть следующее DTO:

export default class SearchNotesDto {
  query: string;
  createdAfter: Date;
  createdBefore: Date;
}

Что я получу sh, чтобы получить, когда запрос GET сделан к конечной точке, которая обрабатывается следующей функцией в моем контроллере:

@Get()
getNotes(@Query() searchNotesDto: SearchNotesDto): Note[] {
  if (Object.keys(searchNotesDto).length) {
    return this.notesService.searchNotes(searchNotesDto);
  }
  return this.notesService.getAllNotes();
}

Моя проблема в том, что createdAfter и createdBefore являются строками в searchNotesDto, и я sh для работы с Date объект, есть ли способ неявного преобразования этих полей в Date?

1 Ответ

2 голосов
/ 10 февраля 2020

@Query будет сериализовать все свойства для типа string, потому что так работает строка запроса в терминах HTTP-запроса. Вам нужно будет использовать Pipe для преобразования вашего запроса в правильную форму данных.

https://docs.nestjs.com/pipes

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;
   }
}
...