작성
·
175
0
캐싱이 매번 deserlizeUser로 데이터 조회하지 않도록 객체를 만들어 거기에 유저의 데이터를 저장해서 사용하는 걸로 보입니다.
그렇다면 단순히 유저의 id만 저장해야 하나요 아니면 팔로잉테이블, 좋아요 테이블 등 전부 가져와야 하는 건가요?
이렇게 간단하게 코드를 짜봤습니다.
cash객체를 선언하고 cash가 NULL이면
.then(user => done(null, user))
이 코드에서 user 데이터를 req.user에 저장하기에 그 아래에 바로
cash = req.user로 데이터를 집어 넣습니다
그다음 cash가 NULL이 아니면 cash를 done합니다
그러나
이러한 오류가 발생하는데
오류가 난 코드는 이 코드 입니다.
실은 간단히 쳐본거라 접근방법이 틀린것 일수도 있지만 캐싱에 저장할 데이터가 너무 모호해서 질문 올립니다.
다른 스스로 해보기는 앞에서 한 작업에서 응용하는 거라 접근방법이 어느정도 다가오는데 캐싱하기는 제가 하는 접근이 맞는지 틀린지조차 애매합니다;;
답변 1
0
.then(cash => cash = req.user)
이게 잘못되었습니다. 여기 매개변수를 cash로 줘버리면 위에 let cash랑 다른 cash입니다.
그리고 req.user가 비동기로 생긴다면 req.user도 undefined입니다. cash에 user를 넣으세요.
참고로 캐쉬 스펠링은 cache입니다.
이렇게 바꿔서 해봤지만
똑같은 에러가 나옵니다.
전 이 에러가 나오는 이유가 req.user를 저장하지 못해서 에러가 난 것이라고 판단했는데
왜 이런 에러가 나온것 일까요??
이렇게 주면
Cannot read properties of undefined (reading 'length')
똑같이 이런 에러가 뜹니다
user에 커서를 대보면 user의 이름을 찾지 못했다고 뜹니다
이렇게 해봐도 똑같은 에러가 발생합니다
이 user는 매개변수인가요? 찾은 User의 데이터 아닌가요?
사실 좀 이상한게 deserializeUser는 첫 로그인을 serialize로 받아서 세션을 저장해야만 호출되는것이 아닌가요? 왜 첫 화면부터 저렇게 에러가 뜨는지도 모르겠습니다