• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

데이터 전달이 안되서 질문드립니다

21.09.10 14:01 작성 조회수 136

0

안녕하세요 제로초님

복습하다 안되는 부분이 있어 질문드립니다

 

현재 해시태그를 클릭하면 클릭한 해시태그만 타임라인에 나오는 부분을 구현중에 있습니다.

그런데 화면상에 아무 글도 뜨지 않아 질문드려요

 서버상에서는 200 제대로 뜹니다. 데브툴에도 loadPost 찍히구요. 근데 백엔드에서 비어있는 Array를 내려주는거 같아서 콘솔로 Store/posts.js 내부의

f(payload && payload.reset) {
                console.log('reset'payload.hashtag)
                const res = await this.$axios.get(`/hashtag/${payload.hashtag}?limit=10`)
                console.log(res)
                commit('loadPosts', {
                    datares.data,
                    resettrue,
                })
                return;
           }

loadHashtagPosts안을 이렇게 확인해보니 아예 비어있는 값이 뜹니다. 

그래서 백엔드의 hashtag.js를 제로초님 코딩과도 비교해보고, 왜 프론트로 데이터가 전송이 안되는지 계속 찾아보고 생각해봤는데 답이 안나와서 질문드려요

어떤 이유때문에 이런일이 벌어질수있는건가요?ㅜㅜ

 

routes/hashtag.js

router.get('/:tag'async (reqresnext=> {
    try {
        let where = {};
        if (parseInt(req.query.lastId10)) {
            where = {
                id: {
                    [db.Sequelize.Op.lt]: parseInt(req.query.lastId10)
                }
            }
        }
        const posts = await db.Post.findAll({
            where,
            include: [{
                modeldb.Hashtag,
                where: { namedecodeURIComponent(req.params.tag) }
            }, {
                modeldb.User,
                attributes: ['id''nickname']
            }, {
                modeldb.Image
            }, {
                modeldb.User,
                as"Likers",
                attributes: ['id']
            }, {
                modeldb.Post,
                as'Retweet',
                include: [{
                    modeldb.User,
                    attributes: ['id''nickname']
                }, {
                    modeldb.Image
                }]
            }],
            order: [['createdAt''DESC']],
            limitparseInt(req.query.limit10|| 10,
        })
        return res.json(posts)
    } catch(err) {
        console.error(err)
        next(err)
    }
})

Store/posts.js

loadHashPoststhrottle(async function ({commitstate}, payload) {
        try {
            if(payload && payload.reset) {
                console.log('reset'payload.hashtag)
                const res = await this.$axios.get(`/hashtag/${payload.hashtag}?limit=10`)
                console.log(res)
                commit('loadPosts', {
                    datares.data,
                    resettrue,
                })
                return;
            }
            if(state.hasMorePost) {
                const lastPost = state.mainPosts[state.mainPosts.length - 1]
                const res = await this.$axios.get(`/hashtag/${payload.hashtag}?lastId=${lastPost && lastPost.id}&limit=10`)
                commit('loadPosts', {
                    datares.data
                })
                return;
            }
        } catch (err) {
            console.error(err)
        }
    }, 3000),

참고 하실 코드 업로드해드립니다

 

참고로 hashtag/_id/index.vue에 팻치도 

fetch({ storeparams }) {
        return store.dispatch('posts/loadHashPosts', {
            hashtagencodeURIComponent(params.id),
            resettrue,
        })
   },

연결하였고

app.js 에 router도 연결해놨습니다

 

계속 확인중에 있는데

GET /posts?limit=10 304 14.900 ms - - 이러한 에러? 가 터미널에 뜨는데 무슨 문제인지 모르겠습니다ㅜ

 

 

 

답변 1

답변을 작성해보세요.

0

304는 200이랑 같습니다. 캐슁된 데이터를 그대로 쓰겠다는 겁니다.

/hashtag/23 요청을 보내셨는데 해시태그 23으로 검색하신 게 맞나요? 실제 디비에 해시태그 23이 들어있나요?

문종현님의 프로필

문종현

질문자

2021.09.10

워크벤치 들어갔는데 23 포함하여 다른 해시태그붙여서 글쓴것도 없네요....

이게 무슨문제이죠??

db에 Hashtag라는 테이블도 있는데 도대체 왜 db에 23이 안들어가는지 알수있을까요??ㅜㅜ

백앤드 라우터의 hashtag.js 문제인가요??ㅜ

 

db post에 게시물로는 다들어가는데 db hashtag에는 들어가지가 않네요 ㅜㅜ

해시태그 저장단에서부터 문제가 있던 겁니다. 게시글 등록 라우터를 봐보세요.

문종현님의 프로필

문종현

질문자

2021.09.10

아 !! 감사합니다!!

 

거기서 오타가 났었네요!!!계속 혼자 고민하다 이제야 해결하네요.. 혹시 어떻게 그쪽에 문제가 있을거라고 아셨는지 여쭤봐도 되나요??

DB 검색했을 때 안 나왔으면 경우는 두 가지입니다. 검색하는 게 잘못되었거나, 검색할 게 아예 없었거나요. 이번 건 후자였던 겁니다.

문종현님의 프로필

문종현

질문자

2021.09.10

아~~ 그렇군요!! 감사합니다^^ 정말 큰 도움됬습니다~~~!!!!