다디와 괴발개발

[Node.js, fastify-cli] 함수 출력 결과가 Promise { <pending> } 로 나오는 현상 본문

TroubleShooting

[Node.js, fastify-cli] 함수 출력 결과가 Promise { <pending> } 로 나오는 현상

아임다디 2022. 4. 16. 20:47

발생시기

fastify-cli 프레임워크를 사용한 Node.js 백엔드 프로젝트 도중, 작성한 api를 console.log로 결과를 출력해 볼 때 발생했던 상황

상황

MongoDB에서 collections안에 있는 정보들을 Read하는 함수의 결과값을 테스트해보기 위해 console.log로 출력해보았는데,
출력 결과가 뜬금없는 Promise { <pending> }이 나왔다.

누구냐 넌!

원인

결과가 async/await를 통해 Promise 객체로 만들어진 함수라 비동기 형식으로 값에 접근을 해줘야 한다.

해결

결과를 받아오는 함수 앞에 await를 붙여주면 된다.

자바스크립트는 await 키워드를 만나면 Promise가 처리될 때 까지 기다리고 결과가 리턴된다.

- const curBody = readMyRestaurant(this.mongo, tmpId)
+ const curBody = await readMyRestaurant(this.mongo, tmpId) // awiat를 추가해준다

결론

Js의 async/await로 함수를 만들었다면, 함수에 대한 결과값은 await로 받아와야 한다