inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

AccessTokenGuard 적용해보기

postPosts의 req.user.id 컴파일 에러?

362

정민교

작성한 질문수 50

0

postPosts 컨트롤러까지 요청이 들어왔다면 Request 객체에 user 프로퍼티가 있는 것은 확실한데

타입스크립트 컴파일러가 인식을 못하는 것 같아요.

앱 실행이 안되는데 어떻게 해결해야 할까요...

javascript typescript rest-api nestjs backend

답변 2

0

코드팩토리

안녕하세요!

문제점은 잘 파악하신 것 같습니다.

그렇게 하셔도 문제는 없습니다.

다만 "postPosts 컨트롤러까지 요청이 들어왔다면 Request 객체에 user 프로퍼티가 있는 것은 확실한데

타입스크립트 컴파일러가 인식을 못하는 것 같아요."는 매우 잘못된 표현입니다. Typescript는 빌드타임 툴이기 때문에 런타임 값들을 당연히 인식 못합니다. 이 부분이 이해가 안된다면 제 JS/TS 강의 참고 부탁드립니다!

감사합니다!

0

정민교

아... user는 동적으로 추가된 프로퍼티니까 Request 타입 정의에 user 프로퍼티가 없는 게 맞고.. 타입스크립트 컴파일러가 정적 타입 검사 할 때 인식 못하는 거 아닌가요...?

컴파일 언어란 소리는 아니고 타입 컴파일러가 그냥 사전에 타입만 체크해주는 거로 알고 있었는데 이것도 틀린건가요?

0

코드팩토리

동적으로 추가된 프로퍼티라 Request 타입에 user가 없는게 아니라 실제로 Request 타입에는 user가 없습니다. 그렇기 때문에 Request 타입에 user 타입을 추가하고 싶다면 직접 넣어줘야합니다. (진행하신 방법이 한가지 솔루션이 될 수 있습니다)

TS는 실행과 관계가 없습니다. 빌드타임 타입 체크만 해줍니다.

0

정민교

types라는 폴더를 따로 만들고 그 안에 Request interface를 확장한 interface를 다시 만들었습니다.

// request.interface.ts
import {Request} from "@nestjs/common";
import {UsersModel} from "../users/entities/users.entity";

export interface RequestWithUserAndToken extends Request {
    user: UsersModel,
    token: string,
    tokenType: string,
}
// posts.controller.ts

    @Post()
    @UseGuards(AccessTokenGuard)
    postPosts(
        @Request() req: RequestWithUserAndToken,
        @Body('title') title: string,
        @Body('content') content: string,
    ) {
        const authorId = req.user.id;

        return this.postsService.createPost(authorId, title, content);
    }

선언한 interface를 Request 타입으로 사용해서 컴파일러에게 user 프로퍼티가 있다는 것을 인식하게 했는데

혹시 좋지 못한 방법일까요..?

cascade 질문

0

44

1

@types/bcrypt 설치과정이 누락된것같습니다.

0

53

1

process.env port key 에러

0

51

1

추상화

0

52

1

[공유] DTO optional 필드가 undefined로 잡혀 TypeORM 조건이 깨지는 현상

0

105

2

where 키워드가 들어가는 메서드와 아닌 메서드

0

57

1

BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?

0

74

1

app.controller app.service 는 지워도되나요?

0

70

1

@JoinColumn을 쓰는 경우와 안쓰는 경우의 차이

0

81

1

포트 3000에서 listen하는 곳까지 넘어가지 않습니다.

0

70

1

PickType 사용 시 `as const`를 꼭 사용해야 하나요?

0

105

2

socket connect 오류

0

101

2

강의를 들으면서 궁금한 점

0

100

2

DELETE 요청의 반환값은 어떤 기준으로 결정하는 게 좋을까요?

0

64

2

커리큘럼 질문

0

101

2

put 요청은 언제

0

92

3

typeorm VS prisma

0

355

2

142 강의 > 4:00 > 포스트멘 활용 관련 질문 드립니다.

0

79

2

User 데코레이터 버그 수정 전달드립니다.

0

70

1

git 주소 부탁드립니다.

0

115

2

nest g resource 명령어 에러

0

99

2

로그인 엔드포인트 관련 질문

0

86

2

yarn으로 express 다운 후 node 2_server.js 실행 안되는 경우

0

150

3

"흔히 사용되는 메서드" 강의 관련 질문입니다~

0

95

2