gpt4 book ai didi

javascript - NestJS createParamDecorator 返回未定义

转载 作者:行者123 更新时间:2023-12-03 20:02:34 26 4
gpt4 key购买 nike

我正在使用 Nest 版本 ^6.7.2
我正在尝试创建一个从请求中获取 req.user 值的 createParamDecorator。
在 createParamDecorator 内部, req.user 有一个值,但是当我尝试使用装饰器在 Controller 中获取该值时,该值是未定义的。

const AuthSession = createParamDecorator((data, req) => {
console.log(req.user); // session data
return req.user;
});
Controller()
export default class AuthController {
@Get("/token/ping")
@UseGuards(AuthGuard("jwt"))
tokenPing(@AuthSession() session: Session) {
console.log(session); // undefined
return session;
}
}
编辑:我刚刚尝试更新到nestjs v7,我遇到了同样的问题
import { createParamDecorator, ExecutionContext } from "@nestjs/common";

const AuthSession = createParamDecorator((data: any, ctx: ExecutionContext) => {
return { message: "asdf" };
});

export default AuthSession;
@Controller()
export default class AuthController {
@Get("/token/ping")
@UseGuards(AuthGuard("jwt"))
tokenPing(@AuthSession() session: Session) {
console.log(session); // undefined
return session;
}
}

最佳答案

您可以从 ExecutionContext 获取信息:

    import { createParamDecorator, ExecutionContext } from '@nestjs/common';

export const User = createParamDecorator(
(data: unknown, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
return request.user;
},
);
检查文档中的示例: Custom decorator

关于javascript - NestJS createParamDecorator 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65028137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com