3 回答

TA贡献1830条经验 获得超3个赞
您可以首先从 ExecutionContext 获取信息:
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const User = createParamDecorator(
(data: unknown, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
return request.user;
},
);

TA贡献1797条经验 获得超4个赞
我明白问题出在哪里了。我有一个自定义验证 PipeTransform,如果 ArgumentMetadata.type 既不是“body”也不是“param”,则返回未定义。所以现在,如果 ArgumentMetadata.type 既不是“body”也不是“param”,我只返回验证器转换方法的第一个参数(输入),这解决了问题。

TA贡献1802条经验 获得超4个赞
请注意,对于那些面临类似问题的人,我错过了第一个数据参数,它引发了我的错误。
createParamDecorator((ctx: ExecutionContext)
会导致未定义的上下文,而createParamDecorator((data: unknown, ctx: ExecutionContext)
有效。
添加回答
举报