본문 바로가기
Project/축구모임 홈페이지개발

[축구모임 홈페이지개발] 03/26 개발일지 Nodejs / 승부차기 게임 구현2

by 한33 2024. 3. 26.

문제가 생겼다.

 

우선, 접속시간 비교 후 20회 초기화 시키는 과정에서 내가 저장한 시간이 한국 시간이 아니었다.

 

이는 예전에 게시물 기능구현을 할 때 겪었던 시행착오여서 금방 해결할 수 있었다.

 

passport.deserializeUser(async (user, done) => {
  try {
    let result = await db.collection('user').findOne({ _id: new ObjectId(user.id) });
 
    if (result) {
      delete result.password;
      const timeZone = 'Asia/Seoul';
      let today = new Date( new Date().toLocaleDateString('ko-KR', { timeZone }));
      let recentLogin = result.recent_login;
      if (recentLogin != today.getDate()) {
        await db.collection('user').updateOne(
          { _id: new ObjectId(user.id) },
          { $set: { shooting_count: 20 } }
        );
      }
      await db.collection('user').updateOne(
        { _id: new ObjectId(user.id) },
        { $set: { recent_login: today.getDate() } }
      );
     
    }

 

 const timeZone = 'Asia/Seoul';

 let today = new Date( new Date().toLocaleDateString('ko-KR', { timeZone }));

 

기존에 today 에 할당되었었던 new Date().toLocaleDateString('ko-KR', { timeZone }) 

 

값은 문자열이기 때문에 new Date 로 한 번 더 묶어서 객체로 바꾸고 그 뒤에.getDate() 를 붙여서 날짜만 가져올 수 있었다.

 


 

두 번째 문제는 남은 기회가 깎여서 0이 된 후에 로그아웃 후 다시 로그인 해보면 이상하게 남은 횟수가 일정하지 않은 수로 어느 정도 롤백 되는 문제이다.

 

예상으로는 데이터베이스로 들어가는 과정에서 무언가 문제가 있는게 아닐까 싶다.