2

I have a axios GET method and I need to pass parameters with the get request. I am calling the GET method in Client side (React.js) like this,

    const [Cart] = useState([]);
    const user = {
        userId : session.userId
    };

    console.log(user);
    useEffect((user) => {
        if(session.userId !== null){

            //Axios.get('http://localhost:5000/api/cart/getCart', user) <- I tried both these ways
            Axios({
                method: 'GET',
                url: 'http://localhost:5000/api/cart/getCart',
                headers: {
                    'Content-Type': 'application/json',
                    'Accept': 'application/json'
                },
                data: {},
                params: {
                    "userId" : session.userId
                }
            })
                .then(res => {
                    const cart = res.data;

                    let tempProducts = [];
                    cart.data.forEach(item => {
                        const singleItem = {...item};
                        tempProducts = [...tempProducts, singleItem];
                    });

                    this.setState(() => {
                        return {Cart: tempProducts};
                    });

                })
        }
        console.log(Cart)
    });

But in server side (node.js), it doesn't get the parameter value.

router.get('/getCart', (req, res) => {

    console.log(req.body.userId) //This gives the output as undefined
    User.findOne({_id: req.body.userId}
    ,(err, userInfo) => {

       res.json(userInfo.Cart);

    })
});

I implemented the uncommented axios.get request by referring to this. Can you please help me to find the error? Or can you suggest me any other method to do this? Thanks

1 Answers1

7

UseEffect :

 axios.get('/api', {
          params: {
            foo: 'bar'
          }
        });

Server :

function get(req, res, next) {

  let param = req.query.foo
   .....
}
Akhil Thakur
  • 143
  • 8