인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

proyong님의 프로필 이미지
proyong

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

백엔드에서 데이터 가져오기 질문드립니다.

작성

·

712

0

상세데이터를 가져오기 위해 백엔드를 아래와같이 작성하고

app.get('/api/product/products_by_id', (req, res) => {
    //let type = req.query.type
    let productId = req.query._id
    Product.find({ _id: productId })
        .exec((err, product) => {
            if(err) return res.status(400).send(err)
            return res.status(200).send({success:true, product})
        })
})

디테일 페이지는 이렇게 썼는데요.

import React, {useEffect, useState} from 'react';
import axios from 'axios';

function DetailProductPage(props) {
    const productId = props.match.params.productId
    const [Product, setProduct] = useState([]);
    useEffect(() => {
        axios.get(`/api/product/products_by_id?id=${productId}&type=single`)
            .then(response => {
                if(response.data.success){
                    console.log(response.data)
                    //setProduct(response.data.proudct[0])
                } else {
                    alert('상세 정보 가져오기 실패했습니다.')
                }
            })
    }, [])

콘솔을 확인해보니

productId도 잘 받아오고

response.data도 success:true는 뜹니다.

하지만 product는 Array(0)으로 나오면서 데이터를 불러오질 못하네요.

서버연결은 되는데 데이터를 못불러오는데 이럴 경우 어디를 수정해야할까요?

답변 1

2

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요 ethian 님   

            return res.status(200).send({success:true, product})

 

여기서 send를 json으로 바꿔주세요 ~!! 수고하세요 ~! 



proyong님의 프로필 이미지
proyong

작성한 질문수

질문하기