我試圖從的NodeJS服務器發送對象到前端同步,但一個屬性是在路上的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'])
。我究竟做錯了什麼?
邊注,以取代循環(這不是問題):在'結果[I] = curResult;'的循環是完全沒有意義的。所以'let resultToSend = [];'是'= []'',因爲你稍後用'result'覆蓋它。 (事實上,整個'resultToSend'變量在這個代碼中沒有任何用處。) –
像這樣嘗試 - > https://jsfiddle.net/qcdmv9vk/,'product'很可能是一個遊標,而不是你應該正在編輯 – adeneo
'result'中有什麼?例如,如果條目是數組,則向它們添加非元素屬性將會起作用,但該屬性不會被序列化爲JSON。 –