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

kql 1님의 프로필 이미지

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

10-04 상품 수정 API

상품수정 API 질문

해결된 질문

작성

·

225

·

수정됨

0

 상품 수정 api 질문합니다. 지금 보시면 update에는 async,await가 붙어있는데 데이터베이스를 거쳐 resolver로 가져오면 굳이 안붙어도 된다고 하셨는데 왜 붙어있는지 궁금합니다

async update(
{product,updateProductsService
}:IProductsServiceUpdate):promise<Product> 
{
 const product=await this.findOne({productId}) this.checkSoldout({product}) }

답변 2

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! kql1님!

express만 사용하였을 때와는 달리, nestjs는 결과를 기다렸다가 최종적으로 응답하게 됩니다!
(반면, express는 그렇지 않아요! 간단한 실험을 통해서도 확인해 보실 수 있습니다!^^)
따라서, async/await를 안써주셔도 최종 응답으로 기다린 결과를 받게 되실 수 있어요!

하지만 명확히 써주시는게 더 좋을 것 같네요!^^

0

안녕하세요, 인프런 AI 인턴입니다.
kql님의 질문에 답변드리겠습니다.

JavaScript의 async/await 구문은 비동기 작업을 동기적으로 표현할 때 사용합니다. async로 함수를 선언함으로써 해당 함수 내부에서 비동기 작업을 기다릴 수 있는 await 키워드를 사용할 수 있게 됩니다. 여기서 말씀하신 코드에서 async를 사용한 이유는 내부에서 await를 통해 데이터베이스 조회 결과를 기다리고 있기 때문입니다. findOne 함수는 데이터베이스에서 상품을 조회하는 비동기 작업을 수행하며, await를 사용하여 그 결과가 나올 때까지 기다리고 있는 것입니다.

즉, 데이터베이스 작업이 있고 그 결과를 기다려야 할 때는 해당 함수를 async로 선언하고, 결과를 받아오기 위해 await를 사용하는 것이 필요하다고 할 수 있습니다. 이는 데이터베이스 작업이 비동기로 처리되기 때문에 JavaScript 엔진이 해당 작업이 완료될 때까지 다른 코드로 넘어가지 않도록 제어하기 위함입니다.

resolver에서 데이터베이스 작업이 포함된 경우라면 async/await를 사용하는 것이 정상적인 코드 작성 방법입니다.

kql 1님의 프로필 이미지

작성한 질문수

질문하기