簡體   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