javascript - req.session.cart [object object] [object object] 如何在我的 sapper/svelte 应用程序中迭代和查看它
问题描述
夜猫子:所以我正在练习我的工兵/苗条应用程序。创建了一个包含少量商品的购物页面,我可以在其中订购这些商品并将它们添加到我的购物车中。
一切正常(我在会话中将项目添加到购物车)但我添加的项目作为 [object object] [object object] 存储在会话(db session)中,尽管事实上我不知道如何查看我知道对象是如何设计的。我阅读了所有关于如何迭代对象的所有内容,但是,我无法在我的应用程序中显示 req.session.cart 对象。我不知道我这样做是对还是错。请指教。
我的带有购物项目的苗条页面是基本的,无需在此处添加。这是我的服务器路由,我在其中捕获订购的物品并处理这些条目。
我在其中获取数据的 SC3.JS 文件:
var fetch = require('node-fetch');
export async function post(req, res, next) {
res.setHeader('Content-Type', 'application/json');
/* Retrieve the data */
var data = req.body;
//cart constructor
function Cart() {
this.add = function (item) {
this.item = item;
let title = this.item.title;
let price = this.item.price;
let storeditem = { title: title, price: price };
req.session.cart += { item: storeditem };
console.log("session log: ", req.session.cart);
};
}
var cart = new Cart();
cart.add(data);
/* Returns the result */
return res.end(JSON.stringify({ info: data }));
}
我是否通过执行 req.session.cart += storeditem 添加了错误的项目???如果这是存储项目的正确方法,我如何使用嵌套在会话购物车对象中的 [object object] 检索它们?
我从 es6 新对象方法中尝试了 obj.keys、obj.values 等,但它显示的只是一些键,而不是我添加到购物车的实际项目(标题和价格)。
这是一个纯 html、css 和 js 的 sapper/svelte 应用程序,任何帮助将不胜感激。
解决方案
您添加的项目错误,您不能 += 一个对象。(这会将其转换为字符串)
在这里我们可以重现您的错误:
let cart = {};
let storeditem = { title: 'my title', price: 1.23 };
cart += { item: storeditem };
console.log("session log: ", cart);
以下是我们可以解决的方法:
let cart = {};
let storeditem = { title: 'my title', price: 1.23 };
let id = 'you need an id'; // Maybe you can use item.id ???
cart[id] = { item: storeditem };
console.log("session log: ", cart);
推荐阅读
- python - 为什么我们需要与均匀分布进行比较来选择一个动作,而策略函数在 Deep RL 中是这样做的
- asp.net-core - 类型未知时反序列化 JSON - .NET Core
- python - def函数后如何运行for循环?
- transformer - 如何使用 Gigaword 或 Cnn dailymail 微调 distillbart 以进行抽象摘要?
- reactjs - 孩子如何在 ReactNative 中继承父母的背景?
- javascript - 如何让 Canvas 覆盖下面的其他 Canvas?
- javascript - Discord 机器人错误 - SequelizeDatabaseError: SQLITE_ERROR: no such table: users
- php - 无法准备 SQL 语句
- chart.js - Chart.JS 删除卡在循环中的数据
- java - 对话框在主屏幕上 30 秒后不显示