2016-02-26 68 views
0

我發現數組的奇怪行爲的Node.jsNode.js的遍歷數組並沒有顯示整個對象

谷歌搜索並沒有幫助。 Ofc,這可能會導致我的疲勞。如果是這樣,我很抱歉。

所以,我的模型

var UserSchema = new mongoose.Schema({ 
    id: mongoose.Schema.ObjectId, 
    added: { 
     type: Date, 
     default: Date.now() 
    }, 
    displayName: String, 
    cart: [{ 
     orderNumber: mongoose.Schema.ObjectId, 
     exposition: Object, 
     offer: Object, 
     state: Number,//1 - Unpaid 
    }], 
}); 

在控制器我通過車陣

var cartId = new ObjectId(req.body.id); 
    mongoose.model('User').findById(currentUser.userId, function (err, user) { 
     var cart = user.cart; 
     console.log(cart); 
     var expId = -1; 
     if (cart) { 
      for (var i = 0; i < cart.length; i++) { 
       var cartItem = cart[i]; 
       console.log(cartItem); 
       if (cartItem._id === cartId) { 
        console.log("SHIT"); 
        expId = user.cart.exposition._id; 
        break; 
       } 
      } 
     } 
    }); 

我沒有找到更好的解決辦法找到用戶比環嵌入車試圖循環。 所以,當我登錄我的購物車對象

console.log(cart); 

我得到正確的對象和它工作正常,但是當我試圖登錄

console.log(cartItem); 
console.log(cart[0]); 

我只得到

[object Object] 
[object Object] 

我做錯了什麼?

+1

JSON.stringify控制檯日誌記錄之前的對象。然後你應該看到對象的字符串表示。 – user2263572

回答

3

這是對象的默認toString()。嘗試

console.log(JSON.stringify(cartItem)); 
console.log(JSON.stringify(cart[0])); 

而不是如果你想看到對象的結構。

+0

我知道我的對象的結構。我想比較它的id和cartId。所以,它不起作用。我相信,這些ID是平等的。 –

+0

'==='總是會失敗,如果你試圖比較兩個不同的對象。你嘗試過'cartId.equals(cartItem._id)'嗎? –

+0

無論我現在如何比較對象。對我來說更重要的是爲什麼我必須使用stringify來訪問我的對象的結構? –