Project/축구모임 홈페이지개발
[축구모임 홈페이지개발] 03/26 개발일지 Nodejs / 승부차기 게임 구현2
한33
2024. 3. 26. 20:07
문제가 생겼다.
우선, 접속시간 비교 후 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이 된 후에 로그아웃 후 다시 로그인 해보면 이상하게 남은 횟수가 일정하지 않은 수로 어느 정도 롤백 되는 문제이다.
예상으로는 데이터베이스로 들어가는 과정에서 무언가 문제가 있는게 아닐까 싶다.