nodejs表示发送的对象与前端不同步

时间:2017-09-03 09:15:41

标签: javascript node.js express

我正在尝试将一个对象从nodejs服务器发送到前端,但是一个属性在路上一直被删除

服务器

router.post('/cart/retrieve', (req, res) => {
    let cart = req.session.cart;
    let prodId = Object.keys(cart);

    Product.find({_id: {$in: prodId}}, (err, result) => {
        if (err) throw err;

        let resultToSend = [];

        for (let i = 0; i < result.length; i++) {
            let curResult = result[i];

            curResult['cartQuantity'] = parseInt(cart[curResult._id]);
            result[i] = curResult;
        }
        resultToSend = result;

        console.log(resultToSend[0]['cartQuantity'])

        res.json({cart: resultToSend})
    });
});

前端

$("#top-cart-trigger").click(function(e){
    $.post('/api/shop/cart/retrieve',{

    }, function (returnResult) {
        console.log(returnResult['cart'][0]['cartQuantity'])
        let products = returnResult['cart'];
        console.log(returnResult)
        for(let i = 0; i < products.length; i ++){
            let curProduct = products[i];
            console.log(curProduct['cartQuantity'])
        }
    });

});

所以实际上从服务器发送的json变量和从前端接收的returnResult是相同的变量。但是,我的console.log(resultToSend[0]['cartQuantity'])返回3(这是正确的),但console.log(curProduct['cartQuantity'])未定义所有元素。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我认为问题可能来自您服务器中的可变变量result

然而,似乎变量returnResult['cart']是JSON并且您期待数组。您可以使用'for in'代替。见https://developer.mozilla.org/cs/docs/Web/JavaScript/Reference/Statements/for...in

尝试使用此

替换for循环
   for (let key in returnResult['cart']){
        console.log(returnResult['cart'][key]['cartQuantity']);
    }