쿠키 시간, 간단한 구조

김민준·2023년 6월 29일
0
1. 로그인 쿠키
2. 라우터 내에서의 재선언
3. 복잡한 구조

공부하면서 느낀 점
참조한 사이트

로그인 쿠키

로그인 기능을 구현하고, 글 작성 API로 넘어갔다. 그랬더니 다시 로그인을 하라고 뜨는 것이 아닌가?
알고보니 쿠키의 시간을 설정하지 않은 것이 문제였다. 막연히 쿠키의 시간을 설정하지 않으면 무한히 쓸 수 있을 것이라고 생각했는데 아니었다.

쿠키의 시간 setMaxAge()

  • 0 : 삭제
  • 음수 : 브라우저 종료시 자동 삭제
  • 양수 : 밀리초(ms)단위

c.setMaxAge(60 * 60 * 24 * 10);

라우터 내에서의 재선언

A라는 라우터에서 선언한 것을 B라는 라우터에서 또 선언하니 다시 선언할 수 없다는 오류가 떴다.

const {
        passwordNew,
        confirmPasswordNew,
        message,
        nickname
    } = req.body;

스코프가 다르기 때문에 있을 수 없는 일이라고 생각하고 코드를 다시 보니, B라는 라우터의 아래에 같은것이 선언되어 있었다. 클라이언트로 부턷 두 번 입력을 받는 것을 구현하던 중에 생긴 사소한(?) 오류였다. 결국 생각을 바꾸어서 두 번 입력 받는 것은 마음을 접었지만, 다음에 만든다면 변수 이름을 잘 생각하거나 cosnt 대신 let을 쓰는 방법을 생각해봐야겠다.

복잡한 구조

if문을 중첩으로 만들고 if문 마다 return을 가지는 구조를 구상하고 만들었다. 하지만, 처음부터 만든게 아니라 예전에 만든것에서 조금씩 복붙해온 뒤 고치는 방법을 사용했다. 문제가 생겼다.

  1. 같은 기능을 구현했는데 어떨 때는 아래의 내용이 전부 회색으로 처리 되었다.

자세히 보니 내가 if문의 밖에 return을 적어서 아래의 내용이 다 쓸모가 없어 진 것이었다.

  1. 생각한대로 작동하지 않았다.
  • 변수를 잘못 불러왔다.
    입력한 값이 현재 값과 다르다면, DB에서 중복을 확인하는 방식이었는데, 애초에 같은 값을 입력했다면 DB에 중복이 있을 수 밖에 없어서 무조건 안되는 구조였다. 다행히도 스키마에 unique: true로 설정해놔서 굳이 체크하는 기능을 만들 필요는 없었다. 다행이었다.
  1. 내가 구조를 파악 못했다.

단순한 것임에도 불구하고, 위의 문제들을 해결하는데 시간이 오래거렸는데, 내가 만든 구조를 내가 이해하지 못했기 때문이었다. 결국...

if(x!==1){
  if (x!==2) {
  	// 내용물
  } else {
  	//내용물
  }
}

이런식으로 최대한 간단한 if문으로 만들어서 구조를 파악했다. 처음에 만드려고 한 것은

if(){
   } else if (){
    } else {
		}

이런 방식이었다. 내가 구현하려는 기능이 어떤 구조인지 나 스스로가 알지 못해서 구현을 하지못하고, 문제가 터져도 어디가 문제인지 파악하는데 오래 걸렸던 것이었다.

공부하면서 느낀 점

  1. 최대한 간단한게 구현하고 그 다음에 살을 붙이는 것이 좋다.
    물론, 이전의 작업물에서 코드를 가져오는 것도 좋지만, 1:1 대응이 되는것이 아니라면 필히 수정해야한다.
  2. 단순히 넘기지 말 것
    객체를 만들 때, 생략해도 되는 속성과 아닌 속성을 확실히 알고 사용하자.

참조한 사이트

쿠키

profile
node 개발자

0개의 댓글

관련 채용 정보