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

2024-04-23

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

  • 我正在使用会话,也许这会导致从前端发送请求时出现问题?

这是我的帖子请求:

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 code:

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}`);
    }

当我尝试在客户端与之交互时,没有任何警告或错误。这是我在后端得到的输出(不断重复单个产品的信息,但这在客户端正常工作):


如果您使用的是 Angular、Vue、React 或任何支持路由的前端框架。你不需要使用res.redirect更改路线并获取数据。

你用怎么样res.send(cart)返回购物车数据并在前端进行重新路由。

async postCart(productId){
    cartService.post(`/add-to-cart/${productId}`);
    // history.push('/your-next-route')
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试从客户端发送数据,但 req.session 无法正常工作 的相关文章

  • Angular2 与 Jquery-ui 滑块

    我尝试将 Jquery ui 滑块与 angular2 一起使用 我想让变量 slideValue 显示滑块的值 但我不知道如何将我的模型或变量从角度绑定到滑块 这是我的滑块组件 import Component ElementRef In
  • 使用 .add() 选择多个 jQuery 对象

    是否 add http api jquery com add 方法允许一次选择多个对象而不是一次添加一个 one add two add three add four on click function 以下变量的设置方式相同 因为每个变量
  • 设置 location.hash 时防止默认行为

    当我这样做时 location hash test url 会更新 页面会定位到具有该 id 的元素 有没有办法阻止页面定位到该元素 Solution 您无法阻止这种行为 但您可以通过暂时隐藏目标来愚弄它 例如 像这样 与 jQuery 无
  • 不使用 PHP 提交联系表单

    我还是一名学生 今天我们的讲师告诉我们 无需使用 mailto 函数即可提交联系我们表单的唯一方法是使用 PHP 我发誓去年另一位讲师向我们展示了一种仅使用 javascript 的方法 是否可以使用基本表单和 javascript 提交反
  • 如何将事件对象传递给 JavaScript 中的函数?

  • Excel 宏与 Javascript

    我希望使用 Javascript 中的宏而不是默认的 VBA 来操作 Excel 电子表格 我可以使用以下 VBA 代码执行 javascript 代码 javascript to execute Dim b As String b fun
  • Chrome 开发工具:无需切换到“源”选项卡即可进入调试器

    如果我把debugger https developer mozilla org en US docs JavaScript Reference Statements debugger当 Chrome 开发工具打开时 我的 JavaScri
  • 是否可以进行条件解构或有后备?

    我有一个具有许多深层嵌套属性的对象 我希望能够访问 MY KEY 上的属性 如下 但如果该属性不存在 则获取 MY OTHER KEY 我怎样才能做到这一点 const X Y MY KEY Values segments segment
  • jQuery 选择器定位具有 id AND class 的元素不起作用

    我有以下事件处理函数 jQuery document on click button submitb function e alert jQuery 包含在 html 文档中 但是 如果我点击 div class submitb Go di
  • 三.js环境光意想不到的效果

    在下面的代码中 我渲染了一些立方体并使用点光源和环境光照亮它们 然而 当设置为 0xffffff 时 AmbientLight 会将侧面的颜色更改为白色 无论其指定的颜色如何 奇怪的是 点光源按预期工作 我怎样才能使环境光表现得像点光 因为
  • 修剪日期格式 PrimeNG 日历 - 删除时间戳、角度反应形式

    我将以下内容推入我的反应形式 obj 中2016 01 01T00 00 00 000Z但我想要以下2016 01 01 有谁知道有一个内置函数可以实现上述目的 我已经搜索过文档here https www primefaces org p
  • 从 html5

    我正在寻找一种方法来根据用户代理字符串将控件属性添加到视频标签 我不希望在 iPad 和 Android 之外的任何浏览器或设备上出现控件属性 所以我认为用户代理是最好的识别方法 因为 ipad 和 android 一词出现在各自的 UA
  • 如何使用 jest 通过 Promise.all 设置多次提取测试

    我在测试中使用 jest 我正在使用 React 和 Redux 并且执行以下操作 function getData id notify return dispatch gt dispatch anotherFunction Promise
  • 如何更改元素的 CSS 类并在单击时删除所有其他类

    我如何处理 AngularJS 2 中的一种情况 即单击一个元素需要更改其自己的样式 并且如果其他元素具有该样式 则需要将其删除 最好在一个函数中 如同Angular js 如何在单击时更改元素 css 类并删除所有其他元素 https s
  • JavaScript 中的最短路径

    几周来我一直在寻找一种在 JavaScript 中计算最短路径的方法 我一直在玩书数据结构和算法作者 格罗纳 Groner 名字恰如其分 https github com loiane javascript datastructs algo
  • Facebook API Javascript JSON 响应

    function getUser FB api me function response console log Response is response alert Your name is response first name ale
  • 在firefox上用js改变表单方法

    我需要使用 javascript jQuery 或纯 更改表单的方法属性 我的表单有 method post 我尝试用以下方法更改它 submit button click function var url input id url val
  • 有没有办法从画布上清除一个元素而不消除其他元素?

    我正在使用画布构建页面加载器 并使用 es6 类 虽然目前我无法使其正常工作 原因之一是我找不到清除画布的方法进展 到目前为止 这是我的代码 class Loader constructor width height this width
  • JavaScript 正则表达式两个标签之间的多行文本

    我编写了一个正则表达式来从 HTML 中获取字符串 但似乎多行标志不起作用 这是我的模式 我想将文本输入h1 tag var pattern div class box content 5 h1 lt lt h1 gt mi m html
  • 角度 4 单击按钮功能未触发

    我正在尝试检查文本输入是否为空或不在角度 4 中 我没有为此使用表单 这只是一个输入字段 当我在下面的按钮中执行 addLocaton 函数时 需要进行检查 我的输入字段

随机推荐

  • 如何使用生物指纹识别器开发指纹数据库

    我购买了一个简单的生物识别指纹读取器 通常用于通过 USB 连接确保笔记本电脑的安全 它只是被称为生物指纹识别器 而不是品牌 它附带了为笔记本电脑创建安全性的软件 而且效果很好 然而 我对此有不同的想法 我打算创建一个用户指纹数据库 以便我
  • HTTP 错误 500.22 - 内部服务器错误(已检测到不适用于集成托管管道模式的 ASP.NET 设置。)

    当我查看应用程序时 我收到此错误 HTTP 错误 500 22 内部服务器错误 已检测到不适用于集成托管管道模式的 ASP NET 设置 安装了 Net Framework 2 0 3 5和4 并且我使用的是SQL 2008 谁能告诉我这个
  • MVP 和 GWT 小部件之间的通信

    如果我将 MVP 模式与 GWT 结合使用 如 2009 年 Google I O 中的 GWT 架构最佳实践讨论 但已将信息分散到多个小部件中 那么应该如何填充值对象 假设我有一个 EditPersonView Presenter 一个
  • GitLab 在 Debian 上安装失败

    我正在尝试在 Debian 8 5 0 上安装 GitLab 我遵循安装指南 https about gitlab com downloads debian8但最后一步失败了 我在文档中找不到任何信息 gitlab ctl 重新配置完成 R
  • BASH - 读取具有相同“变量”的多个实例的配置文件

    我正在尝试读取配置文件 然后将配置的 部分 放入 bash 脚本中的数组中 然后运行命令 然后再次重复配置 并继续执行此操作 直到配置文件的末尾 这是一个示例配置文件 PORT 5000 USER nobody PATH 1 OPTIONS
  • Flutter 区域设置日期字符串到日期时间

    我想将日期 String 转换为 DateTime 对象 字符串包含土耳其语月份名称 如下所示 我的字符串 来自 API 10 Mart 2021 16 38 我的区域设置 土耳其 tr 我怎样才能转换 感谢您 尝试以下操作 只有 en U
  • 读取 URL 查询参数值 (Vue.js)

    在 vuejs 回调 URL 中 我有一些参数值 我需要读取这个参数值 例如返回url是 http localhost 8080 sucesspage encryteddata abdeshfkkilkalidfel 9a 我努力了this
  • std::vector::insert 的重载解析如何工作

    这是三分之二insert来自 std vector 的方法签名 void insert iterator position size type n const value type val template
  • Python内部结构[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以指导我阅读在线文档或书籍 在那里我可以找到并了解 C 中的 Python 实现 例如 Per
  • Python 变量在不应该改变的时候发生改变

    我正在处理的代码正在更改我的临时变量 但我不知道如何阻止它 本质上 问题是这样的 def example array temp array for i in range whatever change array 我需要更改数组 但保持温度
  • 无法为 Android 源代码创建 Xamarin 组件

    我已经使用了命令 xamarin component exe package C cmp AndroidComponent component 用于创建 Xamarin 组件 在构建示例 android 项目时 它显示以下错误 我已使用命令
  • Gradle 升级 7.2 > 7.3 中断,“此属性的值是最终的,不能进一步更改”(使用 Micronaut 插件?)

    我使用 Micronaut 3 1 3 和 Gradle 7 2 来构建我的项目 After 切换到 Gradle 7 3 内置中断会发出一些上下文无关的错误消息 gradlew clean build Executed by Gradle
  • 为什么这个上下文管理器与字典理解的行为不同?

    我有一个上下文装饰器 完成后会产生副作用 我注意到 如果我使用字典理解 就不会出现副作用 from contextlib import contextmanager import traceback import sys accumulat
  • 在 Woocommerce 产品标题中添加换行符

    假设我的产品标题是 棕色皮鞋 但根据我的列宽 标题如下所示 棕色皮革 Shoes 我知道可以进行角色替换 以便 在后端变成换行符 br 但我不知道怎么办 我希望它看起来像这样 棕色 皮鞋 我找到了这些参考资料 在商店页面上的产品标题上添加一
  • 如何为列表中的每个元素创建一个按钮并将其放在滚动区域中?

    我有一个列表 每次用户打开文件时都会获取一个元素 我需要创建一个带有文件名 列表中的元素 的按钮 每次将该文件附加到列表中时 并将该按钮放入滚动区域 问题是我总是只有一个按钮 只是更改了名称 filenames def addfiles f
  • SASS/SCSS 变量不适用于 CSS 变量赋值

    我有以下 SCSS 代码 mixin foo bar 42 xyzzy bar bar include foo 我希望得到 CSS 变量 xyzzy set to 42 on all bar元素 相反 我得到 CSS 说明bar xyzzy
  • 根据背景将前景色设置为黑色或白色

    比如计算RGB分量的平均值 然后决定使用黑色还是白色 我是否必须在第一步将 RGB 转换为 HSV 因为 RGB 并不总是人眼看到的 我正在使用 C 恰巧我不久前的一个项目需要这个功能 private int PerceivedBright
  • 如何正确访问后台线程中创建的查询结果?

    我想在后台线程中执行数据库查询 OmniThread 库将帮助我处理所有线程问题 但到目前为止我不明白一件事 每个线程都需要一个单独的数据库连接 因此 后台线程创建数据库连接 创建查询 然后执行它 现在我可以使用后台线程的查询对象访问查询结
  • 停止并重新启动 HttpListener?

    我正在开发一个应用程序 它有一个HttpListener 我的目标是让用户根据自己的选择关闭和打开监听器 我将侦听器放入一个新线程中 但在中止该线程时遇到问题 我在某处读到 如果您尝试中止非托管上下文中的线程 那么一旦它重新进入托管上下文T
  • 尝试从客户端发送数据,但 req.session 无法正常工作

    我正在尝试执行发布请求 当我使用邮递员执行此操作时非常成功 但我正在尝试从客户端发送它 我想发布购物车 但结果是我不断发布数量为 1 的商品 无论我发布该请求多少次 解决此问题并以正常方式发布请求的最佳解决方案是什么 我正在使用会话 也许这