[英]POST http://localhost:3000/upload 500 (Internal Server Error)
[英]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.