繁体   English   中英

isAxiosError.js:12 POST http://localhost:3000/cartdata 500(内部服务器错误)

[英]isAxiosError.js:12 POST http://localhost:3000/cartdata 500 (Internal Server Error)

错误图像我正在尝试创建一个购物车,并且在每次更新后将数据从客户端获取到服务器端后,即使一切正常并且购物车数据正在更新中,我也会收到内部服务器错误session。

这是来自客户端的代码:

const fetchData = async () => {
    const res = await axios.get(`http://localhost:3000/cartdata`);
    const data = res.data;
    console.log(data);
    calculateTotals(data);
    remove(data);
    // postData(data);
}
fetchData();

const postData = async (data) => {
    // checkSlice(data);
    axios.post('http://localhost:3000/cartdata',{
        data: data
    }).then((data) => {
        console.log('posted', data)
    }).catch((err) => {
        console.log('error');
    });
}

这是来自后端的代码:

router.get('/cart', (req, res) => {
    let sess = req.session;
    let cart = (typeof sess.cart !== 'undefined') ? sess.cart : false;
    console.log(cart)
    res.render('tarpit/cart', {
        pageTitle: 'Cart',
        cart: cart,
        nonce: Security.md5(req.sessionID + req.headers['user-agent'])
    });
});

router.get('/cartdata', (req, res)=>{
    let sess = req.session;
    let cart = (typeof sess.cart !== 'undefined') ? sess.cart : false;
    res.json(cart);
})
router.post('/cartdata',asyncError(async (req, res) =>{
    req.session.cart =  req.body.data
    console.log(req.session.cart);
    await req.session.cart.save();
}))

router.post('/cart',asyncError(async(req, res) => {
    let qty = parseInt(req.body.qty, 10);
    // console.log(qty);
    let product = req.body.product_id;
    // let format = new Intl.NumberFormat('en-US', {style: 'currency', currency: 'USD'});
    if(qty > 0 && Security.isValidNonce(req.body.nonce, req)) {
        const mypro = await Products.findOne({_id: product})
            let cart = (req.session.cart) ? req.session.cart : null;
            const prod = {
                id: mypro._id,
                title: mypro.title,
                price: mypro.price,
                qty: qty,
                image: mypro.image[0].url,
            }
            // res.send(prod)
            Cart.addToCart(prod, qty, cart);
            res.redirect('/cart');

    } 
    else {
        res.redirect('/');
    }
}));

谢谢

假设您正在使用 session 的快速会话,请删除 await req.session.cart.save(); 从您的 /cardata 发布方法并使用以下


await req.session.save()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM