Да, вы можете сделать "композицию декоратора" с Nest, но это может быть не лучшим решением для вашего случая, в зависимости от того, что вы собираетесь делать, когда user
не имеет свойства email
.
В соответствии с примером из документации:
import { applyDecorators } from '@nestjs/common';
export function Auth(...roles: Role[]) {
return applyDecorators(
SetMetadata('roles', roles),
UseGuards(AuthGuard, RolesGuard),
ApiBearerAuth(),
ApiUnauthorizedResponse({ description: 'Unauthorized"' }),
);
}
В этом примере Auth
- это декоратор, который можно использовать для объединения всего одного, переданного в * 1012. *.
Таким образом, я бы рекомендовал расширить вашего декоратора, используя трубу .
Как указано в документации :
Nest обрабатывает пользовательские декораторы параметров так же, как и встроенные (@Body (), @Param () и @Query ()). Это означает, что каналы выполняются и для пользовательских аннотированных параметров (в наших примерах пользовательский аргумент). Кроме того, вы можете применить конвейер непосредственно к пользовательскому декоратору:
@Get()
async findOne(@User(new ValidationPipe()) user: UserEntity) {
console.log(user);
}
В этом примере User
- это декоратор пользовательских параметров. И ValidationPipe
пройдено, но вы можете представить проход любой трубы .