[英]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.