Как настроить нестандартное гнездо js pipe? - PullRequest
1 голос
/ 13 января 2020

У меня есть самый базовый c канал, который я хотел бы использовать в методе нестандартного провайдера. Канал выглядит следующим образом:

@Injectable()
export class DateTransformPipe implements PipeTransform {
  transform(value: any, metadata: ArgumentMetadata) {
    console.log('Inside the DateTransformPipe pipe...');
    return value;
  }
}

А вот класс, в котором я хотел бы использовать его:

@Injectable()
export class MyProvider {

    @UsePipes(new DateTransformPipe())
    private getDataFor(onDate: Date): string {
      console.log(onDate);
        return 'Some Stuff'
    }
}

Канал находится в специальном каталоге src/helpers/pipes. Проблема в том, что метод преобразования канала вообще не вызывается ... Кажется, я не понимаю, почему.

1 Ответ

4 голосов
/ 13 января 2020

Поскольку каналы выполняются только в процессе запроса nest js, поэтому эта функция getDataFor является закрытой, поэтому, я думаю, вы выполняете ее с помощью некоторого кода в MyProvider, это не так, как она работает.

Пожалуйста, прочитайте документы: https://docs.nestjs.com/pipes

Но имейте в виду, что каналы выполняются только при обработке запроса структурой, а не для каждого метода, который у вас может быть У Nest нет такой силы.

Таким образом, вы можете использовать эти методы привязки к пути контроллера.

fe:

@Controller('cats')
class CatController {
    @Post()
    @UsePipes(new DateTransformPipe())
    async create(@Body() createCatDto: CreateCatDto) {
    this.catsService.create(createCatDto);
    }
}
...