javascript - 尝试从客户端发送数据但 req.session 无法正常工作

标签 javascript express client

我正在尝试发布请求,当我使用 postman 时它非常成功,但我试图从我的客户端发送它。我想发布购物车,但结果我不断发布数量为 1 的项目,无论我发布该请求多少次。解决此问题并以正常方式发布请求的最佳解决方案是什么?

  • 我正在使用 session ,也许这会导致从前端发送请求的问题?

  • 这是我的发帖请求:
    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}`);
        }
    
    当我尝试在客户端与之交互时,没有警告或错误。这是我在后端得到的输出(不断重复单个产品的信息,但这在客户端正常工作):
    enter image description here

    最佳答案

    如果您使用的是 angular、vue、react 或任何支持路由的前端框架。你不需要使用res.redirect更改路线并获取数据。
    你怎么用res.send(cart)返 repo 物车数据并在前端进行重新路由。

    async postCart(productId){
        cartService.post(`/add-to-cart/${productId}`);
        // history.push('/your-next-route')
    }
    

    关于javascript - 尝试从客户端发送数据但 req.session 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69006505/

    相关文章:

    javascript - 使用regexp javascript从源文件中查找所有导入的文件名

    javascript - Cufon 与西里尔字符的问题

    javascript - 2 testcafe runner with promise.race 但如何一起运行这些?

    express - 在 Create React App 实用程序中启用 CORS

    user-interface - 备用 Perforce 客户端?

    javascript - 无法在对象数据中使用三元运算符

    Node.js + Express + Redis,何时关闭连接?

    css - 使用 Node.js (Ubuntu 18.04) 将 CSS 和图像链接到我在远程 Express 服务器上的 EJS 模板

    python - 在 Twisted 客户端中生成 header

    r - 有没有办法确定 R 代码是在客户端(笔记本电脑安装)还是在服务器上运行 - 在 R 服务器安装中