코딩기록

항해 74일) 오늘의 할 일 + TIL 본문

항해99/TIL

항해 74일) 오늘의 할 일 + TIL

뽀짝코딩 2022. 3. 24. 14:40
728x90

API-gameFinishShow 부분에서 find, findOne으로 디비에서 찾은 값들을 가공하는 방법을 찾고 있었데 aggregate가 늦게 응답해서 계산후 teachingCnt가 0으로 뜨는게 아니라 계산전 값을 불러와서 0으로 찍힌다는 팀원의 의견이 있었다.

이 aggregate를 지금 4일째 하고있다. 처음 동기, 비동기의 차이 얘기를 들고 생각해 보니 gameStart에서도 같이 aggregate/ lookup이 쓰이는데 여기는 async, await 동기식으로 값이 잘 나온다. gameFinishShow도 동기식이라 값이 늦게 나오는게 아니라 너무 빨리 찾아져서 0으로 나오는게 문제라는게 맞는 것 같다. 그 의견을 참고해서 기존에 프론트에서 gameFinish와 동시에 gameFinishShow API를 부르는 방법에서 1초 정도 차이를 두고 gameFinishShow를 호출 하는 방법으로 바꾸니 teachingCnt의 값이 나왔다.

 

이게.. 지금 자바스크립트의 비동기식 방법을 async, await으로 동기식으로 쓰는데 이 부분이 코드작성시 고려 되지 않았고 프론트에서 값이 호출되는 타이밍까지 계산이 되지 않아서 해결 방법을 찾는데 시간이 오래 걸렸다. sql스터디 쌤한테 물어봤을때도 그 답변의 뜻을 이해 못했는데 다른 팀원과 대화중 알게 되었다. 

처음에는 aggregate를 잘못 썼다고 생각했고 나중에 우선 aggregate로 값이 나오는지 확인하려고 find, findOne 뒤에 aggregate를 써봤다가 순서를 위, 아래 바꿔서 썼다가 값이 나오는게 다른걸 발견하고 aggregate에서 나오는 teachingCnt의 값이 '계산후 값이다' 라고만 생각했는데 '계산전' 이라는걸 고려를 못했다. 저번 클론코딩부터 기존CRUD를 변형한 코드작성을 하다보니 많이 배우고 있다. 너무 어려워서 API하나를 일주일을 씨름하고도 아직까지 씨름하는 중이지만 이 과정에서 배우는것이 많다는건 좋은점이다. 코딩은 코드작성시 보다는 디버깅을 하면서 배우나보다.

 

 

 

 

 

 

오늘의 할 일

1. API-gameFinishShow부분 aggregate로 다시 하기

 

 

1. API- teachingCnt가 null 이어도 승, 패 point 점수 주기

 

 

 

 

오늘의 스케줄
  • 12:50 - 기상
  • 0325금 새벽 5시20 - 수면

 

 

 

 

오늘 배운 것

디비에 default: 0 으로  설정을 하면 처음 생성때부터 디비에 0으로 생성된다.

teachingCnt: {
    type: Number,
    default:0
  }

39번같이 생성된다. 한번도 훈수쳇을 하지 않았지만 default:0 이라서 승,패 계산시 계산이 된다.

훈수쳇을 한번도 하지 않으면 계속 teachingCnt는 null이고 null값에서는 승,패 아무것도 계산이 안된다.

38번은 teachingCnt: Number 로 적고 회원가입시 생성된 사진이다.

 

 

 

 

 

 

 

반응형

'항해99 > TIL' 카테고리의 다른 글

항해 80일)오늘의 할 일 + TIL  (0) 2022.03.30
항해 79일)오늘의 할 일 + TIL  (0) 2022.03.29
항해 51일) 오늘의 할 일 + TIL  (0) 2022.03.01
항해 48일) 오늘의 할 일 +TIL  (0) 2022.02.26
항해 37일) 오늘의 할 일 + TIL  (0) 2022.02.15
Comments