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