exec( )의 기능
삭제된 글입니다
답변 2
0
ssdev님 안녕하세요 :)
mongoose로 데이터를 불러오거나 수정할 때 리턴 되는건 Promise가 아니라 Mongoose Query인데요.
Async/Await를 사용하면 차이가 크게 없습니다. 다만 exec를 사용하면 오류 발생시 stack trace(구체적으로 어디에서 오류가 발생했는지)가 좀 더 세부적으로 나오는 이점은 있어요. 하나의 요청에 많은 디비 작업들을 해야한다면 정확히 어떤 디비 작업에서 오류가 발생했는지 알기 어려울 수도 있는데 이 때 exec가 유용합니다.
그리고 await 혹은 .then을 하지 않으면 작성한 쿼리가 실행이 되지 않아요(const user = User.findOne({});). await 없이 .execute를 하게 되면 해당 mongoose query는 Promise로 변환이 되고 실행이 되요. 여기서 await없이 단순히 execute를 하면 해당 Promise가 처리 되기 전에 다음 코드들이 실행됩니다.(말 그대로 await, 즉 기다리지 않고 실행되는거죠)
간혹 요청이 끝날때까지 기다리지 않고 execute만 할 필요가 있을 수 있는데 일반적으로 await를 해서 성공적으로 처리가 되면 다음 코드로 넘어가죠. 혹은 동시에 처리할 수 있는거라면 await Promise.all로 처리를 하게 되고요. 요청이 끝나지 않고 기다리는 경우로는 데이터 일관성과 상관 없는 작업이 같이 들어갈 때 이겠네요. 예를 들면 서버의 처리현황을 외부 서비스에 전달해서 기록한다던지요. 이런건 굳이 하나하나 await해서 반응속도를 늘릴 필요가 없겠죠. await 하지 않으면 해당 promise가 처리 되기도 전에 클라이언트한테 요청 응답이 갈 수 있어요.
option usecreateindex is not supported 오류 나면은
0
160
1
Schemaless 특성을 재생시 검은화면이 나와요
0
257
1
user 내장 시 ref 필드 필요성
0
255
1
await 관련해서 질문드릴게 있습니다!!
0
306
2
섹션6의 3번째 강의 faker파일이 어디있나요?
0
320
1
$elemMatch 질문이 있습니다.
0
251
1
DB 업데이트에 실패했을 상황에서 대처는 어떻게 할 수 있나요.
2
776
2
블로그에 user 데이터를 추가하는 방법에 대해서
0
242
1
blog 데이터 생성시 user 관련 오류
0
363
1
age 예외 처리를 별도로 하신 이유가 궁금합니다.
2
312
2
delete 메소드가 많은 이유가 궁금합니다.
0
185
1
unique validation 처리
0
302
1
updateMany에서 user._id를 못찾는 상황
1
402
1
find() 가 리턴하는 instance member
1
437
3
몽고 db를 백업방법을 부탁합니다.
0
609
1
인덱스 생성시점
0
720
1
$pull 문법에 대한 질문
0
366
1
comment의 id가 생성되는 시점
1
310
1
리팩토링 강의에서 라우터 리팩토링 전개연산자(...)
1
320
1
session.abortTransaction()에 대한 실제 예시 문의
0
295
1
섹션9 Computed Fields 강의에서, 다음 강의 가기 전 빠진부분
-1
413
1
faker 패키지 취약성 이슈
1
494
1
라우터 리팩토링
0
348
1
섹션4 진행중, mongoose 질문
0
316
1





