req.session.cart [object object] [object object] 如何在我的 sapper/svelte 应用程序中迭代和查看它
req.session.cart [object object] [object object] how to iterate and view it in my sapper/svelte application
夜猫子:
所以我正在练习我的 sapper/svelte 应用程序。创建了一个包含少量商品的购物页面,我可以在其中订购这些商品并将它们添加到我的购物车。
一切正常(我将商品添加到 session 中的购物车)但我添加的商品存储在 session (db session) 中作为 [object object] [object object] 尽管我知道 object 是如何设计的,但我不知道如何看待它。我阅读了所有关于如何迭代 object 的文章,但是,我无法在我的应用程序中显示 req.session.cart object。我不知道我这样做是对还是错。请指教
我的带有购物项目的 svelte 页面是基本的,不需要在此处添加。
这是我的服务器路由,我在其中捕获订购的商品并处理这些条目。
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 }));
}
我的 mongodb 显示以下内容
我是不是通过 req.session.cart += storeditem 添加了错误的项目???
如果这是存储项目的正确方法,我如何使用 [object object] 嵌套在 session 购物车 object?
中检索它们
我尝试了 es6 新 object 方法中的 obj.keys、obj.values 等,但它显示的只是一些键,而不是我添加的实际项目(标题和价格)到购物车。
这是一个 sapper/svelte 应用程序,它是纯 html、css 和 js
任何帮助将不胜感激。
问题是这里的这一行:req.session.cart += { item: storeditem };
您正在使用 += 将 { item: storeditem } 附加到购物车 属性 中,这会将其转换为字符串,并且由于它是一个对象,因此会变成 [object object]
我不确定你的 "cart" 属性 的结构,但如果它是一个数组,只需将该行更改为
req.session.cart.push({ item: storeditem })
您添加的项目有误,您不能 += 一个对象。 (这会将其转换为字符串)
在这里我们可以重现您的错误:
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);
夜猫子: 所以我正在练习我的 sapper/svelte 应用程序。创建了一个包含少量商品的购物页面,我可以在其中订购这些商品并将它们添加到我的购物车。
一切正常(我将商品添加到 session 中的购物车)但我添加的商品存储在 session (db session) 中作为 [object object] [object object] 尽管我知道 object 是如何设计的,但我不知道如何看待它。我阅读了所有关于如何迭代 object 的文章,但是,我无法在我的应用程序中显示 req.session.cart object。我不知道我这样做是对还是错。请指教
我的带有购物项目的 svelte 页面是基本的,不需要在此处添加。 这是我的服务器路由,我在其中捕获订购的商品并处理这些条目。
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 }));
}
我的 mongodb 显示以下内容
我是不是通过 req.session.cart += storeditem 添加了错误的项目??? 如果这是存储项目的正确方法,我如何使用 [object object] 嵌套在 session 购物车 object?
中检索它们我尝试了 es6 新 object 方法中的 obj.keys、obj.values 等,但它显示的只是一些键,而不是我添加的实际项目(标题和价格)到购物车。
这是一个 sapper/svelte 应用程序,它是纯 html、css 和 js 任何帮助将不胜感激。
问题是这里的这一行:req.session.cart += { item: storeditem };
您正在使用 += 将 { item: storeditem } 附加到购物车 属性 中,这会将其转换为字符串,并且由于它是一个对象,因此会变成 [object object]
我不确定你的 "cart" 属性 的结构,但如果它是一个数组,只需将该行更改为
req.session.cart.push({ item: storeditem })
您添加的项目有误,您不能 += 一个对象。 (这会将其转换为字符串)
在这里我们可以重现您的错误:
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);