我正在尝试将一个对象从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'])
未定义所有元素。我做错了什么?
答案 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']);
}