NestJS: трансформируйте ответы - PullRequest
2 голосов
/ 20 мая 2019

С NestJS мы можем преобразовать входящий запрос @Body(), используя канал проверки.

Точно так же я хотел бы, чтобы мои ответы были преобразованы с использованием https://github.com/typestack/class-transformer classToPlain.

Это сделано для того, чтобы я мог сопоставить значения полей с форматом ответа, например:

export class FoobarDto {

    @Transform((money: ExchangeableMoney) => money.localValues)
    public foobar: ExchangeableMoney;

}

Как идиоматически можно добиться этого в NestJS?

1 Ответ

3 голосов
/ 20 мая 2019

Обычно вы используете встроенный ClassSerializerInterceptor в сочетании с ValidationPipetransform: true).Он автоматически вызывает classToPlain в ответе:

В вашем dto (с toPlainOnly):

@Transform((money: ExchangeableMoney) => money.localValues, {toPlainOnly: true})
public foobar: ExchangeableMoney;

В вашем контроллере:

@UseInterceptors(ClassSerializerInterceptor)

или глобально в вашем main.ts:

app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get(Reflector)));
...