typescript - Hur konfigurerar jag en anpassad nestjs-pipe?
Jag har det mest grundläggande rör som jag skulle vilja använda på en metod hos en anpassad leverantör. Röret ser ut som följer:
@Injectable()
export class DateTransformPipe implements PipeTransform {
transform(value: any, metadata: ArgumentMetadata) {
console.log('Inside the DateTransformPipe pipe...');
return value;
}
}
Och här är klassen där jag skulle vilja använda den:
@Injectable()
export class MyProvider {
@UsePipes(new DateTransformPipe())
private getDataFor(onDate: Date): string {
console.log(onDate);
return 'Some Stuff'
}
}
Röret ligger i en speciell katalog src/helpers/pipes. Problemet här är att rörets transformmetod inte kallas alls... Jag verkar inte kunna lista ut varför.
Svar #1
Eftersom pipes endast körs i NestJS-processen för en förfrågan, och denna funktion getDataFor är privat, antar jag att du kör den via någon kod i MyProvider, detta är inte hur det fungerar.
Vänligen läs dokumentationen: https://docs.nestjs.com/pipes
Men kom ihåg att pipes bara körs när en förfrågan bearbetas av ramverket, inte för varje metod du kan ha, Nest har inte den typen av kraft.
Så du kan använda det på metoder som är bundna till controller-sökvägen.
fe :
@Controller('cats')
class CatController {
@Post()
@UsePipes(new DateTransformPipe())
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
}
