작성자 프로필
라면과구공탄
자바스크립트 풀스택 개발자
2024.05.26

프로젝트 서버 리팩토링을 억지로 간신히 힘겹게 하고 있는 와중,

타입스크립트에서 Promise 객체를 반환하는 경우 구조 분해 할당을 통한 직접 접근이 불가능하다는 것을 발견하였다.

NestJS의 Controller에서 공개 게시판에 게시물이 표시될 때, 본인이 스크랩한 게시물에는 하트가 표시되도록 하는 기능을 개발하였다.

정말 별것도 아닌 작고 미미하면서 깜찍한 기능이지만, 이것을 추가하니까 수정해야하는 코드가 많아졌다.

미들웨어를 거치는 Controller가 아니라서 일부 함수 안에서만 토큰으로 회원의 Id를 받아오도록 코드를 작성해보았다.

        
        
      

const { userId } = decodedToken;

여기서 구조분해 할당으로 userId를 가져올 수 없다는 오류메시지가 떴다.

        
        
      

verifyToken 함수를 살펴보니 Promise 객체를 리턴하고 있었다.

userId와 oauthProvider가 객체의 속성이긴 하지만, Promise 객체를 반환하므로 직접적으로 접근이 불가능하다.

await를 붙이면 promise에서 resolve 한 값을 반환한다. await가 없으면 promise 객체가 리턴되는게 맞는데 현재 내가 작성한 함수는 비동기라서 pending상태의 promise가 리턴된다고 생각하시면 됩니다

그래서 await 키워드를 앞에 붙여주어야 한다.

        
        
      

이렇게 await를 붙여서 비동기 작업이 완료되면 decodedToken의 값을 받아온 후, userId를 추출되도록 하였다.

스터디 프로필
자바스크립트 풀스택 개발자
의 다른 카테고리
0
👍1
👏0
🤔
댓글 작성