【问题标题】:req.session.cart [object object] [object object] how to iterate and view it in my sapper/svelte applicationreq.session.cart [object object] [object object] 如何在我的 sapper/svelte 应用程序中迭代和查看它
【发布时间】:2020-06-17 08:50:35
【问题描述】:

夜猫子: 所以我正在练习我的工兵/苗条应用程序。创建了一个包含少量商品的购物页面,我可以在其中订购这些商品并将它们添加到我的购物车中。

一切正常(我在会话中将项目添加到购物车),但我添加的项目作为 [object object] [object object] 存储在会话(db session)中,我不知道如何查看尽管我知道对象是如何设计的。我阅读了所有关于如何迭代对象以及所有这些的 tuts,但是,我无法在我的应用程序中显示 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 }));

}

我的 mongodb 显示如下

我是否通过执行 req.session.cart += storeditem 添加了错误的项目? 如果这是存储项目的正确方法,我如何使用嵌套在会话购物车对象中的 [object object] 检索它们?

我尝试了 es6 新对象方法中的 obj.keys、obj.values 等,但它显示的只是一些键,而不是我添加到购物车的实际项目(标题和价格)。

这是一个纯 html、css 和 js 的 sapper/svelte 应用程序 任何帮助将不胜感激。

【问题讨论】:

    标签: javascript arrays session cart svelte


    【解决方案1】:

    问题出在这行:req.session.cart += { item: storeditem };

    您正在使用 += 将 { item: storeditem } 附加到购物车属性,这会将其转换为字符串,并且由于它是一个对象,因此它会变成 [object object]

    我不确定您的“购物车”属性的结构,但如果它是一个数组,只需将该行更改为

    req.session.cart.push({ item: storeditem })
    

    【讨论】:

    • 卡片是一个对象。否则他会得到这个作为日志结果:[object] not [object Object][object Object]
    • 哦,对了,很抱歉在电话中完成了这个答案而错过了!
    【解决方案2】:

    您添加的项目有误,您不能 += 一个对象。 (这会将其转换为字符串)

    在这里我们可以重现您的错误:

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

    【讨论】:

    • @vsambor 非常感谢。很详细的回答,也很清楚。
    • @Marco 乐于助人! :)
    猜你喜欢
    • 1970-01-01
    • 2018-04-19
    • 2022-12-02
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    相关资源
    最近更新 更多