Пользовательский декоратор CurrentUser Nestjs throw host.getArgByIndex не является функцией
Я пытаюсь реализовать систему входа в систему, используя graphql в nest js.
У меня есть логин EP - работает нормально - возвращает токен на предъявителя.
Но у меня есть query
чтобы получить текущего пользователя:
import { CurrentUser } from '../auth/user.decorator'
.
.
.
@Query()
@UseGuards(JwtAuthGuard)
public async me(@CurrentUser() user: any) {
console.log(user)
return { email: 'foo' }
}
С кастомным декоратором (user.decorator.ts
):
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { GqlExecutionContext } from '@nestjs/graphql';
export const CurrentUser = createParamDecorator(
(data: unknown, context: ExecutionContext) => {
const ctx = GqlExecutionContext.create(context);
return ctx.getContext().req.user;
},
);
Когда я бегу me
Я получаю ошибку "host.getArgByIndex is not a function",
- это бросить внутрь CurrentUser
декоратор ctx.getContext()
... что случилось?
Мой импорт правильный?
Это прямо из документа nestjs:https://docs.nestjs.com/techniques/authentication
1 ответ
Вы должны проверить версию Nest как комментарий Джея Макдониэля. Если это версия 6, изменитеcreateParamDecorator
реализовать следующим образом
import { createParamDecorator } from '@nestjs/common';
export const CurrentUser = createParamDecorator(
(data, [root, args, ctx, info]) => ctx.req.user,
);