하루가 끝나가고, TIL 을 쓸 무렵 중대한 오류가 발견되었다...
무려 작성한 스키마 내용중,
playerDefense 부분만 P !!!
대문자로 시작하는 것이었다.
(암튼 내가한것은 아님)
저 대문자 P 를 p로 고치는것만 해도 db push를 새로 해야하며,
그렇게 되면 데이터가 모두 날라간다는 경고문이 출력된다.
현재, 데이터베이스에 존재하는 데이터들은 어디까지나 임시 수준이기 때문에
일단은 데이터를 초기화하고 진행하는것으로 결정이 되었다.
다음으로는, 개선이 필요한 부분 !
어떻게 보면 위의 사건으로 인해 발견된 문제점인데, 어제와 동일한 부분인
랜덤 뽑기 부분이다.
만약, 선수 데이터 테이블이 위처럼만 구성이 되어있다면?
모종의 이유로 중간중간 playerId에 구멍이 나있다면?
기존의 랜덤 추출 방식이 적용된다면, 최대값인 7 기준으로 1~7의 숫자를 뽑을 것이다.
그렇다면, 1 ,2 ,3 이 뽑혔을 경우 에러가 발생하게 된다.
위와 같은 사건(?) 이 발생하거나,
의도적으로 몇몇 선수 데이터를 제거했을 때에도, 유효한 가차뽑기를 만들어야한다.
우선, 모든 선수를 조회해서 playerId를 추출해서 배열 형태로 만든다 !
알고리즘 풀이 시간인가?
이제 기존처럼 반복문으로 json 형태로 데이터를 가공해야하는데,
randomPlayer 의 범위를, 위에서 구한 allPlayers 배열의 인덱스 범위로 만들면 된다 .
그렇게 해당 인덱스의 playerId 를 넣어주면 완성 !!
이렇게 만들 경우, 동일한 방법으로
가차의 대상이 될 playerId를 나름 유연하게 지정할 수 있다.find 의 결과만 있으면 되기 때문에,
선수를 find 하는 where 부분에 레어도 라는게 들어간다거나 하는 등.. 일정 범주의 가차를 만들 수 있게된것 !!
그 외에...
보유 선수 조회 기능을 다른 조원이 작업하셨는데
따지고 보면, roster 기능은 다 내가 맡았어야 되는 상황이라 코드 주도권을 넘겨받았다 !!
이전, 로그인 한 계정의 모든 보유 선수를 출력해주는것 에서
distinct 를 활용하여, playerId 와 enhanceCount 가 동일하게 존재하는 경우
조회 결과에 포함하지 않도록 했다. 즉, 중복된 것은 버려지고, rosterId 가 가장 낮은선수 하나만을 조회하게 된다 !
중복되는 선수는 뭐 하나 다른점이 없기 때문에 깔끔하게 조회할 수 있다.
다만, 몇개가 중복되었는지 정도는 표기할 수 있어야 한다.
해당 부분은... 내일 알아보도록 하자 !!
'내일배움캠프' 카테고리의 다른 글
24.09.23 TIL : CH3 풋살온라인 프로젝트 (0) | 2024.09.23 |
---|---|
24.09.21 TIL : CH3 풋살온라인 프로젝트 (0) | 2024.09.22 |
24.09.19 TIL : CH3 풋살온라인 프로젝트 (0) | 2024.09.19 |
24.09.13 TIL : CH3 풋살온라인 프로젝트 (0) | 2024.09.13 |
24.09.12 TIL : CH3 아이템 시뮬레이터 (0) | 2024.09.12 |