• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

글쓰기? 리트윗? 새로고침 오류

22.11.12 00:32 작성 조회수 197

0

백엔드 노드서버 구축하기까지 들었는데 어딘지 모르겠지만 어느순간부터 글쓰기 기능이 정상적이지 않습니다 리트윗쪽도 마찬가지에요

 

리트윗 할때

이런 에러 뜨고

 

콘솔

redux

RETWEET_REQUEST

RETWEET_SUCCESS

네트워크

대략 이런 상태입니다

리트윗 클릭하면 이런 오류뜨는데 새로고침하면 정상적으로 리트윗 되있어요

 

글쓰기도 오류창은 안뜨는데 무반응이고 새로고침하면 정상적으로 뜹니다

 

콘솔

redux

네트워크

대략 이정도 뜨는데 마찬가지로 새로고침하면 글 작성 되있어요

 

백엔드쪽 부분 같기는 합니다ㅠㅠ

백엔드 routes/post.js 리트윗,글작성 코드는 이런상태에요

router.post('/', isLoggedIn, upload.none(), async (req, res, next) => { // POST /post
    try {
        const hashtags = req.body.content.match(/#[^\s#]+/g);
        const post = await Post.create({
            content: req.body.content,
            UserId: req.user.id
        });
        if (hashtags) {
            const result = await Promise.all(hashtags.map((tag) => Hashtag.findOrCreate({
                where: { name: tag.slice(1).toLowerCase() }
            }))); 
            await post.addHashtags(result.map((v) => v[0]));
        }
        if(req.body.image) {
            if (Array.isArray(req.body.image)) { 
                const images = await Promise.all(req.body.image.map((image) => Image.create({ src: image })));
                await post.addImages(images);
            } else { 
                const image = await Image.create({ src: req.body.image });
                await post.addImages(image);
            }
        } 
        const fullPost = await Post.findOne({
            where: { id: post.id },
            include: [{
                model: Image
            }, {
                model: Comment,
                include: [{
                    model: User, // 댓글 작성자
                    attributes: ['id', 'nickname']
                }]
            }, {
                model: User, // 게시글 작성자
                attributes: ['id,', 'nickname']
            }]
        }, {
            model: User, // 좋아요 누른 사람
            as: 'Likers',
            attributes: ['id']
        })
        res.status(201).json(fullPost);
    } catch (error) {
        console.error(error);
        next(error);
    }
});

router.post('/images', isLoggedIn, upload.array('image'), async (req ,res, next) => { // POST /post/images
    console.log(req.files);
    res.json(req.files.map((v) => v.filename));
});

router.post('/:postId/retweet', isLoggedIn, async (req, res, next) => { // POST /post/1/comment
    try {
        const post = await Post.findOne({
            where: { id: req.params.postId },
            include: [{
                model: Post,
                as: 'Retweet'
            }]
        });
        if (!post) {
            return res.status(403).send('존재하지 않는 게시글 입니다.');
        }
        if (req.user.id === Post.UserId || (post.Retweet && post.Retweet.UserId === req.user.id)) {
            return res.status(403).send('자신의 글은 리트윗할 수 없습니다');
        }
        const retweetTargetId = post.RetweetId || post.id;
        const exPost = await Post.findOne({
            where: {
                UserId: req.user.id,
                RetweetId: retweetTargetId
            }
        });
        if (exPost) {
            return res.status(403).send('이미 리트윗 했습니다');
        }
        const retweet = await Post.create({
            UserId: req.user.id,
            RetweetId: retweetTargetId,
            content: 'retweet'
        });
        const retweetWithPrevPost = await Post.findOne({
            where: {id: retweet.id},
            include: [{
                model: Post,
                as: 'Retweet',
                include: [{
                    model: User,
                    attributes: ['id', 'nickname']
                }, {
                    model: User,
                    as: 'Likers',
                    attributes: ['id']
                }, {
                    model: Image
                }]
            }, {
                model: User,
                attributes: ['id', 'nickname']
            }, {
                model: Image
            }, {
                model: Comment,
                include: [{
                    model: User,
                    attributes: ['id', 'nickname']
                }]
            }]
        });
        res.status(201).json(retweetWithPrevPost);
    } catch (error) {
        console.error(error);
        next(error);
    }
});

답변 1

답변을 작성해보세요.

0

서버 에러이므로 서버 콘솔을 확인하세요.

리트윗 부분은 Post find 시 Likers를 include 안해서 그렇습니다.

br님의 프로필

br

질문자

2022.11.12

글쓸때 터미널

위에는 글 작성하고 나오는부분

아래는 새로고침 했을때 나오는부분

image

 

리트윗 할때 터미널

위에는 리트윗 할때 나오는 부분

아래는 새로고침할때 나오는부분

imageimageimage

 

image

이렇게 뜹니다..

routes/post.js 리트윗안에 Likers 넣는건가요??

리트윗뿐만 아니라 게시글 불러오는 get /posts 라우터에도 Likers 가져와서 넣어야합니다.

게시글 등록은 에러가 없어졌네요

br님의 프로필

br

질문자

2022.11.12

글쓰기랑 리트윗 다 routes/post.js 에서 오류 난거였어요

찾아서 해결했습니다 감사합니다

posts.js에는 Likers있는데 post에서 Likers 위치가 잘못 됐나봅니다