항해99 개발일지

DB문제 해결, 큰 문제의 원인은 아주 사소한 것

변기원 2022. 5. 20. 19:07

https://pungwa.tistory.com/103?category=999643 

 

DB의 데이터가 갑자기 사라진다

추가: 문제와 원인을 자세히 살펴보니 데이터가 갑자기 사라지는 건 아닙니다! 위 영상은 저 혼자 테스트할 때 영상입니다. 모두 실시간으로 다른사람에게도 보이는 화면입니다. 프론트에서 real

pungwa.tistory.com

위 포스팅의 문제를 해결한 방법입니다.

생각해보니 문제가 이거면,, dayNow도 onChange 발생할 때마다 업데이트해주면 되지 않을까요?

왜 다른 값만 onChange에서 가져와서 다른 dayNow에 넣고 있는거지?

그럼 현재 내가 글을 쓰고 있는 textarea는 몇 번째 dayNow에 있는건지 매번 제대로 찾아가서 저장되게만 해주면 문제가 없다는 생각이 들었습니다.

그럼 지금 내가 글을 쓰고있는 textarea는 몇번째 dayNow의 textarea인지 어떻게 가져올까?

우리가 보통 쓰는 저 id라는 건 대체 뭐길래 event.target으로 찾을 수 있는 걸까?

이벤트를 콘솔에 찍어보니 target안에 attributes안에 id가 있습니다. 클릭해볼게요

게임 끝났습니다 ㅋㅋ id를 클릭해보니 nodeValue라는 키가 있고 id값이 들어가 있습니다.

저도 아무거나 하나 attribute로 보내서 값을 event.target으로 가져올 수 있는지 한번 볼게요!

네 됩니다. 저는 isitwork라는 attribute라고 이름을 줘서 dayNow를 보내봤더니 event.target.attributes에 저렇게 찍혀있습니다.

이제 onChange이벤트 실행될 때마다 진짜 dayNow를 같이 업데이트해주면 될 것 같아요.

해결되었습니다. 참여자가 몇 명이든, 누가 어디서 뭘 편집하든 본인이 작성하는 텍스트가 제대로 들어갑니다!

 

사실 에러를 보자마자 생각지도 못한 에러에 너무 큰 에러가 났다고 생각했습니다.

"state가 하나인데 참여자들이 공유하는 건가? 그럼 페이지를 다 나눠야겠다 "라는 생각이 들었고

만약 그렇게 했다면 사용자들이 부자연스럽다고 느꼈을 겁니다. 그리고 시간도 오래 걸렸을 것이고

코드도 복잡해서 유지보수도 더 어려웠을 것 같습니다.

이번 경험을 통해 문제가 있으면 대충 판단하지 말고! 문제를 정확히 파악하고! 정확한 원인을 찾으면

쉬운 방법이 있다는 것을 배웠습니다.