3 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以首先從 ExecutionContext 獲取信息:
? ? import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const User = createParamDecorator(
? (data: unknown, ctx: ExecutionContext) => {
? ? const request = ctx.switchToHttp().getRequest();
? ? return request.user;
? },
);

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
我明白問(wèn)題出在哪里了。我有一個(gè)自定義驗(yàn)證 PipeTransform,如果 ArgumentMetadata.type 既不是“body”也不是“param”,則返回未定義。所以現(xiàn)在,如果 ArgumentMetadata.type 既不是“body”也不是“param”,我只返回驗(yàn)證器轉(zhuǎn)換方法的第一個(gè)參數(shù)(輸入),這解決了問(wèn)題。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
請(qǐng)注意,對(duì)于那些面臨類似問(wèn)題的人,我錯(cuò)過(guò)了第一個(gè)數(shù)據(jù)參數(shù),它引發(fā)了我的錯(cuò)誤。
createParamDecorator((ctx: ExecutionContext)
會(huì)導(dǎo)致未定義的上下文,而createParamDecorator((data: unknown, ctx: ExecutionContext)
有效。
添加回答
舉報(bào)