router.get('/followers',isLoggedIn, async(req,res,next)=>{
try {
//조회 요청을 보낸 즉, 로그인된 유저 정보를 먼저 찾는다.
const user = await User.findOne({where:{id:req.user.id}});
if(!user){return res.status(403).send('없는 유저')};
//있다면 Sequelize관계메소드를 이용해 목록을 가져온다.
const followers = await user.getFollowers();
//결과물을 전송한다.
res.status(200).json(followers);
} catch (e) {
console.error(e);
next(e);
}
})
프로필 팔로잉 가져오기
방법은 팔로워와 동일합니다.
관계태이블에 as를 통해 Followings/ Followes로 구분했기 때문에 이번에는 Followings를 가져오면 됩니다.
이번에는 추가적으로 가져올 Following의 유저데이터를 좀 커스텀 해주겠습니다.
router.get('/followings',isLoggedIn,async(req,res,next)=>{
try {
//조회 요청을 보낸 즉, 로그인된 유저 정보를 먼저 찾는다.
const user = await User.findOne({where: {id:req.user.id}});
if(!user){return res.statud(404).send('없는유저입니다.')};
//있다면 Sequelize관계메소드를 이용해 목록을 가져온다.
const followings = user.getFollowings({
model:User,
attributes:['id','nickname'],
});
//커스텀은 데이터들을 보내준다.
res.status(200).json(followings);
} catch (e) {
console.error(e);
next(e);
}
})
header에는 '팔로잉' / '팔로우' 두가지 property중 하나가 이용되기 때문에 그를 이용한 조건을 걸어주었습니다.
만약 내가 상대방을 팔로우한 팔로잉이 아니면 나를 팔로우한 상대방에게서 지우는 기능을 구현합니다.
컴포넌트렌더링에서는 다음과 같이 해줍니다.
{/*반복문 안에서 온클릭같은게 있다면 반복문에 대한 데이터를 넘겨줄때가 있는데 이때 고차함수 유용 */}
<Card
actions={[
<StopOutlined key="stop" onClick={() => onCancel(item.id)} />,
//onClick={onCencel(item.id)}이렇게 하고, const onCencel=(id)=>()=>{}이렇게도 가능
]}
>