Trying to send data from client side but req.session doesn#39;t work properly(尝试从客户端发送数据,但请求会话无法正常工作)
问题描述
我正在尝试做POST请求,当我和邮递员一起做时,它是非常成功的,但是我正在尝试从我的客户端发送它。我想邮寄购物车,但结果我总是邮寄数量为1的物品,实际上我要邮寄该请求多少次。修复此问题并以正常方式发布请求的最佳解决方案是什么?
- 我正在使用会话,这可能会导致从前端发送请求时出现问题?
这是我的POST请求:
app.post("/add-to-cart/:id", async (req, res) => {
try {
const id = req.params.id;
const { data } = await axios.get("http://localhost:4200/products");
const singleProduct = await data.find((product) => product._id === id);
let cart;
if (!req.session.cart) {
req.session.cart = cart = new Cart({});
} else {
cart = new Cart(req.session.cart);
}
req.session.cart = cart;
cart.addProduct(singleProduct);
console.log(req.session.cart)
res.send(cart);
} catch (error) {
console.log(error);
}
});
这是Cart代码:
module.exports = function Cart(oldCart) {
this.productItems = oldCart.productItems || {};
this.totalQty = oldCart.totalQty || 0;
this.totalPrice = oldCart.totalPrice || 0.00;
this.addProduct = function(item) {
let storedItem = this.productItems;
if (!storedItem.hasOwnProperty("item")) {
storedItem = this.productItems = {item: item, qty: 1, price: item.price};
this.totalQty = 1;
this.totalPrice = item.price;
} else {
storedItem = {item: item, qty: storedItem.qty, price: storedItem.price};
console.log("STORED ITEM: ", storedItem);
this.productItems = storedItem;
storedItem.qty++;
storedItem.price = storedItem.item.price * storedItem.qty;
this.totalQty++;
this.totalPrice += storedItem.item.price;
}
}
}
这是我用@click.prevent="addToCart()"
addToCart(){
let productId = this.oneProduct.id;
Cart.postCart(productId);
}
我从前端的axios服务发送此消息:
postCart(productId){
return cartService.post(`/add-to-cart/${productId}`);
}
当我尝试在客户端与此交互时,没有任何警告或错误。这是我在后端得到的输出(不断重复单个产品的信息,但这在客户端正常工作):
推荐答案
我认为此行有问题:
req.session.cart = cart = new Cart({});
此处解释了此分配未按预期工作的原因:Multiple left-hand assignment with JavaScript
您应该将其更改为:
cart = new Cart({});
逻辑的睡觉应该行得通。
这篇关于尝试从客户端发送数据,但请求会话无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:尝试从客户端发送数据,但请求会话无法正常工作
基础教程推荐
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
- HTML5 画布调整为父级 2022-01-01
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
- 从快速中间件中排除路由 2022-01-01
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
