인프런 커뮤니티 질문&답변

chirpyworks님의 프로필 이미지
chirpyworks

작성한 질문수

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

함수 내 리턴 방법을 어떻게 할지 모르곘습니다.

작성

·

170

0

안녕하세요
프로젝트 진행 중에 방법을 못 찾아서 질문 올립니다.
 
aws Dynamo DB를 연결 중입니다.
express로 연결 할 때는 res.status(200).json()으로 데이터를 리턴했는데 네스트 서비스단에서 어떻게 값을 리턴할 지 방법을 여러모로 찾아봤는데 방법을 모르겠네요
 
익스프레스에서 값 리턴할 때는 아래와 같습니다.
res.status(200).json(data.Items) 형태로 값 리턴을 했습니다.
 
네스트에서는
onScan function 내에서 리턴할 때 express와 같이 res 방법으로 리턴을 해야할 거 같은데 서비스에서는 결합이 커져서 res를 되도록 쓰지 않는게 좋다고 해서 다른 방법을 찾아봤는데 방법을 찾을 수가 없네요..
 
혹시 이 문제에 대해 방법을 제시해 주실 수 있을까요? ㅠㅠ
 

답변 2

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

일단 말로만 설명드리자면 데이터를 담은 프로미스를 리턴하시면 됩니다. return new Promise....로요.

컨트롤러에서는 해당 서비스를 await해서 받으시면 됩니다.

0

chirpyworks님의 프로필 이미지
chirpyworks
질문자

강사님 말씀대로  프로미스를 썼는데 마찬가지로 데이터가 오질 않네요..

컨트롤러 / 서비스 코드 함 확인좀 부탁드리겠습니다...

controller

service

말씀드린대로 Postman으로 호출했을 때 아래와 같이 콘솔에는 잘 찍히는데 리턴값이 안나옵니다..

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

아뇨 그렇게 하시면 안 됩니다.

return은 onScan의 return이지 getDatas의 return이 아닙니다. getDatas의 return으로 만드세요.

chirpyworks님의 프로필 이미지
chirpyworks
질문자

제가 프로미스를 잘못 썼었네요

아래와 같이 docClient.scan을 프로미스로 감싸고 해당 값을 getDatas로 리턴했습니다.

service

controller

 

강사님 덕분에 겨우 해결했네요

감사합니다ㅎㅎ

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

참고로 then 없이 그냥 return data하셔도 됩니다! 컨트롤러에서도 await 하실 필요 없습니다.

chirpyworks님의 프로필 이미지
chirpyworks
질문자

아 그러네요 감사합니다ㅎㅎ

chirpyworks님의 프로필 이미지
chirpyworks

작성한 질문수

질문하기