deserialize 내부에서 db.User.findOne({..)}
240
작성한 질문수 4
passport.deserializeUser(async (id, done) => {
try {
const user = await db.User.findOne({
where: { id }
});
return done(null, user); // 이 때 req.user에 유저 정보 저장
} catch (e) {
console.error(e);
return done(e);
}
});
local();
};
deserializeUser 의 callback 함수에서 done 으로 넘겨지는 user 데이터는 findOne({ where: {id}) 로 조회된 데이터인데요.
이 데이터에는 Followings, Followers 프로퍼티가 포함되지 않습니다. 그러다보니, 5-14에서 발생했던 것 처럼, front/component/AppLayout/UserPorfile 내부 아래 코드에서 에러가 발생하게 됩니다.
import React, { useCallback } from 'react';
import { Card, Avatar, Button } from 'antd';
import { useSelector, useDispatch } from 'react-redux';
import { LOGOUT_REQUEST } from '../../reducers/user';
const UserProfile = () => {
const { me } = useSelector(state => state.user);
const dispatch = useDispatch();
const onLogout = useCallback(() => {
dispatch({
type: LOGOUT_REQUEST,
});
}, []);
return (
<Card
actions={[
<div key="twit">
짹짹
<br />
{me.Posts.length}
</div>,
<div key="following">
팔로잉
<br />
{me.Followings.length}
</div>,
<div key="follower">
팔로워
<br />
{me.Followers.length}
</div>,
]}>
<Card.Meta
avatar={<Avatar>{me.nickname[0]}</Avatar>}
title={me.nickname}
/>
<Button onClick={onLogout}>로그아웃</Button>
</Card>
);
};
export default UserProfile;
이를 해결하기 위해서는 deserializeUser 에서 login 라우터에서 처럼 데이터를 조회해서 req.user에 저장해야 할 것 같습니다.
아래 코드와 같이 말이죠
- deserializeUser
passport.deserializeUser(async (id, done) => {
try {
const user = await db.User.findOne({
where: { id },
include: [
{
model: db.Post,
as: 'Posts',
attributes: ['id']
},
{
model: db.User,
as: 'Followings',
attributes: ['id']
},
{
model: db.User,
as: 'Followers',
attributes: ['id']
}
],
attributes: ['id', 'nickname', 'userId']
});
return done(null, user); // 이 때 req.user에 유저 정보 저장
} catch (e) {
console.error(e);
return done(e);
}
});
local();
};
이에 대해 어떻게 생각하시나요?
답변 1
next 10 이상에서는 redux dev tool 구동이 안되나요?
0
272
1
세션 갱신 문의 건
0
484
7
배포 진행 후 Highlight updates components render 표시
0
445
1
똑같은 기능을 하는 테이블
0
448
4
관계형
0
312
2
프론트 서버를 이용하지 않는경우
1
299
3
인피니트 스크롤링 사용시 오류
0
278
0
계속 이런에러가 떠서 해결하기는 했는데 어떤 의미인지 모르겠습니다.
0
434
2
req.user가 언제 생성되나요??
0
330
2
Cannot read property 'id' of null 에러
0
333
1
리트윗한 게시글 불러오는 sequelize
0
252
1
result.data에서 images인 이유
0
281
2
takeLatest에 대한 질문입니다.
1
342
2
프론트에서 express를 사용하지 않을때 동적라우팅
0
501
6
getInitialProps가 클라이언트에서 수행되는 이유?
0
258
1
리로드하면 팔로우 언팔로우 값이 초기화 되는 문제입니다.
0
445
2
스타일드 컴포넌트와 className을 통한 스타일 적용의 차이에 대해 궁금합니다
0
585
2
할인 쿠폰 사용이 안되는되요 (848-f9af83f183e3)
0
365
1
nodejs mvc 패턴
0
976
4
사용하고 보니, 람다 구성이 궁금합니다!
0
266
1
제로초님
0
445
1
새로고침 로그인 풀림 문제.
0
247
1
안녕하세요. 강의 너무 감사합니다
0
157
1
제로초님
0
170
1





