인프런 커뮤니티 질문&답변

terecal님의 프로필 이미지

작성한 질문수

React로 NodeBird SNS 만들기

5-15. 로그아웃과 사용자 정보 가져오기

게시글 출력할떄 user 정보가 인클루드가 안되서여

19.11.13 13:47 작성

·

140

0

api 에서

router
.get(''async (reqresnext=> {
    console.log("게시글 불러오기 호출 확인");
    try {
        const posts = await db.Post.findAll({
            include: [{
                model: db.User,
                attributes: ['id''nickname'],
            }],
        });
        console.log("posts : "posts);
        res.json(posts);
    } catch (e) {
        console.error(e);
        next(e);
    }
})

이렇게 user 정보가 인클루드 되었는데 nickname이 없다고 에러가 발생해여
                    avatar={<Avatar>{post.User.nickname[0]}</Avatar>}
                    title={post.User.nickname}
                    description={post.content}


어디서 잘못된건지 봐주시면 감사여 ~!

답변 5

0

mer pie님의 프로필 이미지

2020. 01. 25. 05:19

저도 같은 오류로 고생했었습니다.

왜 그런지는 몰라도 db에 요구값들은 다 들어 있는데 못 불러오더라구요.

여러가지 실험을 해봤더니

post라는 값은 먼저 불러 오는데 그 속의 컨텐츠를 db에서 가지고 오는게 조금 시차가 있나 보더라구요.

그래서 저는 아예 포스트 노출을 post.content가 존재할 때로 바꾸니까 해결됐습니다.

바른 해결 방법은 아닌거 같긴 한데 일단 되니 넘어가고 있구요.

올려주신 답변도 적용해 봐야겠네요 ㅎㅎ 감사합니다 ㅎㅎ

0

terecal님의 프로필 이미지
terecal
질문자

2019. 11. 14. 07:32

router.get('/'async (reqresnext=> { 
    
    try {
        const where = {};
        let options = { where };

        options.include = [
            {
                model: db.User,
                attributes: ['id''nickname'],
            },
        ];
        options.order = [['createdAt''DESC']];

        const posts = await db.Post.findAll(options);

        res.json(posts);
        
    } catch (e) {
        console.error(e);
        next(e);
    }
    
});
이렇게 바꾸니까 출력되여 일단 이코드를 사용할게여
어디선가 오타를 낸거 같기도 한데 잘찾아볼게여 감사합니다

0

terecal님의 프로필 이미지
terecal
질문자

2019. 11. 13. 20:17

user id 는 입력된거 같아여  console에 없는거 보면 디비에 없거나 include 문이 잘못되었거나 두가지중 하나일것 같긴 한데
이유가 무엇일지 짐작을 못하겠어여 저번에 했을때는 되었는데 어디선가 오타를 낸건지 ㅋㅋ;;

0

terecal님의 프로필 이미지
terecal
질문자

2019. 11. 13. 20:14

네 아이디가 제대로 입력되었는지 확인해볼게여 감사여~!

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2019. 11. 13. 13:49

저 부분이 문제가 아니라 게시글 등록할 때 사용자 아이디가 제대로 등록되지 않은 것 같습니다. 게시글 하나를 써본 후 디비에서 UserId가 잘 들어있나 확인해보세요.

terecal님의 프로필 이미지

작성한 질문수

질문하기