[英]Create a custom NestJs Decorator inheriting @Body() or @Param() decorator?
我在NestJs中使用,在我使用的許多控制器中:
@Post(":id")
public create(
@Param('id', new ParseIntPipe()) id: number,
@Body(new ValidationPipe({transform: true})) myData: MyClass) {
// ...
}
我想通過創建自定義裝飾器來清理我的代碼,例如:
@Bind() => @Body(new ValidationPipe({transform: true}))
要么
@Id() => @Param('id', new ParseIntPipe())
然后代碼會比以前更清晰:
@Post(":id")
public create(@Id() id: number, @Bind() myData: MyClass) {
// ...
}
繼承像這樣的裝飾器的正確方法是什么?
謝謝
由於裝飾器只是普通函數,因此您只需創建一個返回被調用裝飾器的函數:
decorators.ts
import { Body, Param, ParseIntPipe, ValidationPipe } from '@nestjs/common';
export const Bind = () => Body(
new ValidationPipe({transform: true}),
);
export const Id = () => Param('id', new ParseIntPipe());
然后將它們用作裝飾器:
import { Id, Bind } from './decorators';
// ...
@Post(":id")
public create(@Id() id: number, @Bind() myData: MyClass) {
// ...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.