reduxSaga로는 되는데 SWR로 바꾸면 에러가 나요
211
작성한 질문수 4
profil.js
import React,{useEffect} from 'react';
import AppLayout from "../components/AppLayout"
import NicknameEditForm from "../components/NicknameEditForm"
import FollowList from "../components/FollowList"
import {useSelector,useDispatch} from "react-redux"
import {LOAD_FOLLOWERS_REQUEST,LOAD_FOLLOWINGS_REQUEST} from "../reducers/userReducer"
import Head from "next/head"
import {useRouter} from "next/router"
import {END} from "redux-saga"
import axios from "axios";
import wrapper from "../store/configureStore"
import {LOAD_MY_INFO_REQUEST} from "../reducers/userReducer"
import useSWR from "swr";
import {backAddress} from "../back"
const fetcher = (url)=>axios.get(url,{withCredentials:true}).then(result=>result.data);
function Profile(){
const dispatch = useDispatch();
const router = useRouter();
const {me} = useSelector(state=>state.userReducer);
const {data:followersData,error:followerError} = useSWR(`${backAddress}/user/followers`,fetcher);
const {data:followingsData,error:followingError} = useSWR(`${backAddress}/user/followings`,fetcher);
useEffect(()=>{
if(!me) {
router.push('/');
}
},[me])
// useEffect(()=>{
// dispatch({
// type:LOAD_FOLLOWERS_REQUEST
// })
// dispatch({
// type:LOAD_FOLLOWINGS_REQUEST
// })
// },[])
// return 이 hooks(use...())보다 위에 있을수 없음
if(!me) return null;
if(followerError || followingError){
console.error(followerError || followingError);
return <div>팔로잉/팔로워 로딩 중 에러가 발생함</div>;
}
return (
<>
<Head>
<title>profile</title>
</Head>
<AppLayout>
<NicknameEditForm />
<FollowList header="팔로잉 목록" data={followingsData} />
<FollowList header="팔로워 목록" data={followersData} />
</AppLayout>
</>
)
}
export const getServerSideProps = wrapper.getServerSideProps(async (context)=>{
const cookie = context.req ? context.req.headers.cookie : "";
axios.defaults.headers.Cookie = "";
if(context.req && cookie){
axios.defaults.headers.Cookie = cookie; // 쿠키 넣기
}
context.store.dispatch({
type:LOAD_MY_INFO_REQUEST,
})
context.store.dispatch(END); // 사용법 request success 기다리기
await context.store.sagaTask.toPromise(); // 사용법 configureStore.js 에서 등록한 sgagTask 를 사용
});
export default Profile;
routes/user.js
router.get("/followers",isLoggedIn,async (req,res,next)=>{
try{
const me = await User.findOne({where:{id:req.user.id}});
if(!me){
res.status(403).send("me 없음")
}
const followers = await me.getFollowers(
{
limit:2,
}
);
res.status(200).json(followers)
} catch(error){
console.error(error);
next(error);
}
})
router.get("/followings",isLoggedIn,async (req,res,next)=>{
try{
const me = await User.findOne({where:{id:15||req.user.id}})
if(!me){
res.status(403).send("me 없음")
}
const getFollowings = await me.getFollowings(
{
limit:2,
}
);
res.status(200).json(getFollowings)
} catch(error){
console.error(error);
next(error);
}
})
Error
sql: 'SELECT `User`.`id`, `User`.`email`, `User`.`nickname`, `User`.`createdAt`, `User`.`updatedAt`, `Posts`.`id` AS `Posts.id`, `Followings`.`id` AS `Followings.id`, `Followings->Follow`.`createdAt` AS `Followings.Follow.createdAt`, `Followings->Follow`.`updatedAt` AS `Followings.Follow.updatedAt`, `Followings->Follow`.`FollowingId` AS `Followings.Follow.FollowingId`, `Followings->Follow`.`FollowerId` AS `Followings.Follow.FollowerId`, `Followers`.`id` AS `Followers.id`, `Followers->Follow`.`createdAt` AS `Followers.Follow.createdAt`, `Followers->Follow`.`updatedAt` AS `Followers.Follow.updatedAt`, `Followers->Follow`.`FollowingId` AS `Followers.Follow.FollowingId`, `Followers->Follow`.`FollowerId` AS `Followers.Follow.FollowerId` FROM `Users` AS `User` LEFT OUTER JOIN `Posts` AS `Posts` ON `User`.`id` = `Posts`.`UserId` LEFT OUTER JOIN ( `Follow` AS `Followings->Follow` INNER JOIN `Users` AS `Followings` ON `Followings`.`id` = `Followings->Follow`.`FollowingId`) ON `User`.`id` = `Followings->Follow`.`FollowerId` LEFT OUTER JOIN ( `Follow` AS
`Followers->Follow` INNER JOIN `Users` AS `Followers` ON `Followers`.`id` = `Followers->Follow`.`FollowerId`) ON `User`.`id` = `Followers->Follow`.`FollowingId` WHERE `User`.`id` = NaN;',
parameters: undefined
}
SequelizeDatabaseError: Unknown column 'NaN' in 'where clause'
at Query.formatError (C:\WEB\full\back\node_modules\sequelize\lib\dialects\mysql\query.js:239:16)
at Query.run (C:\WEB\full\back\node_modules\sequelize\lib\dialects\mysql\query.js:54:18)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
GET /user/followers 500 27.011 ms - 511
리덕스사가로 바꿔서 실행하면 잘 작동하는데 swr로 바꾸면 sql문에 nan값이 들어갑니다. 제가 잘못한 부분이 어디인가요?
답변 1
0
SQL 부분을 보시면 req.user.id가 NaN이네요. console.log(req.user)해보세요. 만약 undefined나 null이라면 로그인이 되어있지 않은 상황이라고 판단됩니다.
넥스트 버젼 질문
0
89
2
로그인시 401 Unauthorized 오류가 뜹니다
0
102
1
무한 스크롤 중 스크롤 튐 현상
0
186
1
특정 페이지 접근을 막고 싶을 때
0
114
2
createGlobalStyle의 위치와 영향범위
0
101
2
인라인 스타일 리렌더링 관련
0
95
2
vsc 에서 npm init 설치시 오류
0
154
2
nextjs 15버전 사용 가능할까요?
0
164
1
화면 새로고침 문의
0
128
1
RTK에서 draft, state 차이가 있나요?
0
158
2
Next 14 사용해도 될까요?
0
455
1
next, node 버전 / 폴더 구조 질문 드립니다.
0
354
1
url 오류 질문있습니다
0
214
1
ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out
0
388
1
sudo certbot --nginx 에러
0
1288
2
Minified React error 콘솔에러 (hydrate)
0
476
1
카카오 공유했을 때 이전에 작성했던 글이 나오는 버그
0
253
1
프론트서버 배포 후 EADDRINUSE에러 발생
0
332
1
npm run build 에러
0
525
1
front 서버 npm run build 중에 발생한 에러들
0
395
1
서버 실행하고 브라우저로 들어갔을때 404에러
0
349
2
css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.
0
290
1
팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.
0
247
2
해시태그 검색에서 throttle에 관해 질문있습니다.
0
205
1





