인프런 커뮤니티 질문&답변
상품수정 API 질문
해결된 질문
작성
·
281
·
수정됨
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를 사용하는 것이 정상적인 코드 작성 방법입니다.





