2017-08-29 22 views
0

このMongodbオブジェクトを照会しようとしていますが、必要な特定のデータポイントに到達できないようです。 imagePathデータをどうやって言うことができますか?データはordersと呼ばれるテーブルに保存されます。ドット表記、つまりorder.cart [0]を試しましたが、配列の深さを増やす方法を理解できません。あなたのカートのitem.items以来このMongodbオブジェクトにどのように問い合わせますか?

{ 
    "_id": ObjectId("5976b6b11306910658b1ff57"), 
    "address": "6210 place", 
    "name": "frank", 
    "paymentId": "ch_1AjJRVDfJryYeuMpJC80cp5k", 
    "email": "[email protected]", 
    "time": ISODate("2017-07-25T03:10:41.522Z"), 
    "cart": [ 
     { 
      "items": { 
       "5975228a215c0f074b64f58e": { 
        "item": { 
         "_id": "5975228a215c0f074b64f58e", 
         "title": "Bracelet 3", 
         "imagePath": "https://www.costco.com/wcsstore/CostcoUSBCCatalogAssetStore/category-tiles/pearl-bracelets.jpg", 
         "description": "This is bracelet 3", 
         "price": 12, 
         "__v": 0 
        }, 
        "qty": 1, 
        "price": 12 
       }, 
       "59752242215c0f074b64f58c": { 
        "item": { 
         "_id": "59752242215c0f074b64f58c", 
         "title": "Bracelet 1", 
         "imagePath": "https://img0.etsystatic.com/160/0/12655872/il_340x270.1187191078_i2ha.jpg", 
         "description": "This is bracelet 1", 
         "price": 10, 
         "__v": 0 
        }, 
        "qty": 2, 
        "price": 20 
       }, 
       "5975226a215c0f074b64f58d": { 
        "item": { 
         "_id": "5975226a215c0f074b64f58d", 
         "title": "Bracelet 2", 
         "imagePath": "http://media.tiffany.com/is/image/Tiffany/EcomBrowseM/paloma-picasso-knot-bead-bracelet-34946183_963148_ED.jpg?op_usm=1.00,1.00,6.00&defaultImage=NoImageAvailable&&", 
         "description": "This is bracelet 2", 
         "price": 5, 
         "__v": 0 
        }, 
        "qty": 1, 
        "price": 5 
       } 
      }, 
      "totalQty": 4, 
      "totalPrice": 37 
     } 
    ], 
    "__v": 0 
} 
+0

これまでに試したコードを表示できますか?あなたは何をしようとしていますか?私はカート[0] .itemsを通してループを推測していますか? – bluetoft

+0

実際の "ドット表記法"はMongoDBに "照会"を発行するための '' cart.0 ''です。これはJavaScriptの構文とは異なります。あなたが実際にそれを言っていないので、あなたがしたい "クエリ"は本当に明確ではありません。 '' items ''の内部内容は問題です。配列の「items」メンバーを作る代わりに、「名前付きキー」を使用しています。実際には、 ''カート ''が** error **の中で一つの要素配列になっているように見えますが、実際に配列を" items "にしようとしていました。それとも少なくともそれが構造物を "すべき"ものなのか。 –

答えて

0

const data = { 
 
    "address": "6210 place", 
 
    "name": "frank", 
 
    "paymentId": "ch_1AjJRVDfJ ryYeuMpJC80cp5k", 
 
    "email": "[email protected]", 
 
    "cart": [ 
 
     { 
 
      "items": { 
 
       "59752 28a215c0f074b64f58e": { 
 
        "item": { 
 
         "_id": "5975228a215c0f074b64f58e", 
 
         "title": "Bracelet 3", 
 
         "imagePath": "https:// www.costco.com/wcsstore/CostcoUSBCCatalogAssetStore/category-tiles/pearl-bracelets.jpg", 
 
         "description": "This is brace let 3", 
 
         "price": 12, 
 
         "__v": 0 
 
        }, 
 
        "qty": 1, 
 
        "price": 12 
 
       }, 
 
       "59752242215c0f074b64f58c": { 
 
        "item": { 
 
         "_id": "597522 42215c0f074b64f58c", 
 
         "title": "Bracelet 1", 
 
         "imagePath": "https://img0.etsystatic.com/160/0/12655872/il_340x270.11871 91078_i2ha.jpg", 
 
         "description": "This is bracelet 1", 
 
         "price": 10, 
 
         "__v": 0 
 
        }, 
 
        "qty": 2, 
 
        "price": 20 
 
       }, 
 
       "5975226a2 15c0f074b64f58d": { 
 
        "item": { 
 
         "_id": "5975226a215c0f074b64f58d", 
 
         "title": "Bracelet 2", 
 
         "imagePath": "http://media .tiffany.com/is/image/Tiffany/EcomBrowseM/paloma-picasso-knot-bead-bracelet-34946183_963148_ED.jpg?op_usm=1.00,1.00,6.0 0&defaultImage=NoImageAvailable&&", 
 
         "description": "This is bracelet 2", 
 
         "price": 5, 
 
         "__v": 0 
 
        }, 
 
        "qty": 1, 
 
        "price": 5 
 
       } 
 
      }, 
 
      "totalQty": 4, 
 
      "totalPrice": 37 
 
     } 
 
    ], 
 
    "__v": 0 
 
}; 
 

 
console.log('looping through Object.keys') 
 
Object.keys(data.cart[0].items).forEach(key => { 
 
    const cartItem = data.cart[0].items[key]; 
 
    console.log('cartItem.item.imagePath', cartItem.item.imagePath) 
 
}) 
 

 
console.log('looping through Object.values') 
 
Object.values(data.cart[0].items).forEach(cartItem=> { 
 
    
 
    console.log('cartItem.item.imagePath', cartItem.item.imagePath) 
 
})

オブジェクトです。 Object.keysまたはObject.valuesを利用して、オブジェクトのプロパティをループすることができます。

+0

これは機能しました!私は正しくループすることができました。迅速な返信をしてくれてありがとうございました。そして少しの情報で(これは初めてです)申し訳ありませんが、もう一度ありがとうございます! – cisco

+0

@cisco私の更新された回答を参照してください...あなたもObject.valuesを活用することができます(おそらく簡単です) – bluetoft

関連する問題