해결된 질문
작성
·
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
를 사용하는 것이 정상적인 코드 작성 방법입니다.