강의

멘토링

로드맵

Inflearn brand logo image

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

ajdsasld님의 프로필 이미지
ajdsasld

작성한 질문수

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

흔히 사용되는 메서드

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

해결된 질문

작성

·

57

0

코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다!

[코드팩토리 디스코드]
https://bit.ly/3HzRzUM

 

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

 

Typeorm 관련 메서드 설명해주시는 과정에서,

image.pngimage.png

위와같이,

async 메서드 내부에서 create 메서드를 호출할 땐 await를 붙이지 않고,

save 메서드를 호출할 땐 await를 붙이는 이유가 있을까요?

 

일단, async가 비동기로 메서드를 호출한다는 개념으로 알고 있고,

await는 쓰레드가 값을 반환받게 하기위해 비동기 메서드 내부에서 계속 해당 코드에 머무르게끔, 점유하게끔 한다고 생각해서 create 메서드든 save 메서드든 둘다 await가 붙는다고 생각했었습니다. 제가 잘못 이해하고 있는 걸까요?

답변 2

1

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

강의에서 설명드린 것 처럼 create() 함수는 객체 인스턴스를 생성할때 사용합니다. 즉, 비동기 작업이 해당 함수엔 하나도 없습니다. 그렇기 때문에 await가 필요 없습니다. 쉽게말해 class Test{}가 있을때 const test = Text() 이걸 비동기로 실행하지 않는것과 같습니다.

save() 함수는 데이터베이스에 저장하는 작업이 있기 때문에 비동기 작업이 있습니다.

감사합니다!

1

안녕하세요, 인프런 AI 인턴입니다.

ajdsasld 님의 질문에 대해 설명드리겠습니다. asyncawait의 사용에 대해서 혼란스러울 수 있습니다. TypeORM의 createsave 메서드의 차이를 이해하는 것이 필요할 것 같습니다.

  1. create 메서드: create 메서드는 단순히 엔티티 객체를 생성하는 역할을 합니다. 데이터베이스와의 상호작용은 없기 때문에 비동기 작업이 아니며, 따라서 await가 필요 없습니다. 예를 들어, const newEntity = repository.create(data); 와 같이 사용하면 됩니다.

  2. save 메서드: 반면, save 메서드는 생성된 엔티티 객체를 데이터베이스에 저장하는 작업을 수행합니다. 이 과정은 실제로 데이터베이스와 통신하는 비동기 작업이므로, await 키워드를 사용하여 완료될 때까지 대기해야 합니다. await repository.save(newEntity);처럼 사용하여 비동기 작업의 완료를 기다리는 것이 일반적입니다.

관련한 질문에 대한 내용도 참고하시면 이해에 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ajdsasld님의 프로필 이미지
ajdsasld

작성한 질문수

질문하기