Можете ли вы использовать FileInterceptor с TransformPipe - PullRequest
0 голосов
/ 16 ноября 2018

Я столкнулся с проблемой с TransformPipe - она ​​работает до тех пор, пока я не использую FileInterceptor. Поскольку мне нужны обе функции, это смутило меня. Я создал проблему на Github, но Камил написал на ней, что это нормальное поведение фреймворка. Ни я, ни мои друзья не нашли никаких ссылок на это "нормальное" поведение в официальной документации. У вас есть идеи?

Код здесь :

Контроллер

@UsePipes(SamplePipe)
@UseInterceptors(FileInterceptor('file'))
@Post()
samplePost(@UploadedFile() file) {
  return file
}

труба

@Injectable()
export class SamplePipe implements PipeTransform {
  transform(value: any, metadata: ArgumentMetadata) {
    console.log("I'm working")
    return value;
  }
}

1 Ответ

0 голосов
/ 16 ноября 2018

Pipes работают только для следующих типов: 'body' | 'query' | 'param' | 'custom', соответствующих @Body(), @Query(), @Param() или пользовательских декораторов подобно @User().В вашем примере у вас нет ни одного из них, и поэтому канал не применяется.

Так что, если вы добавите один из них в ваш пример, канал будет применен (в данном случае к @Body()).

@UsePipes(SamplePipe)
@UseInterceptors(FileInterceptor('file'))
@Post()
samplePost(@UploadedFile() file, @Body() body) {
                                 ^^^^^^^^^^^^^
  return file
}

Если вы используете @UsePipes(), труба будет применяться везде, где это применимо.Вы также можете использовать @Body(SimplePipe) body только для того, чтобы применить трубу к телу.

...