2017-08-29 2 views
0

J'essaie d'interroger cet objet Mongodb mais je n'arrive pas à accéder à certains points de données dont j'ai besoin. Comment puis-je dire les données imagePath? Les données sont enregistrées dans une table appelée commandes. J'ai essayé la notation par points, c'est-à-dire order.cart [0] mais je n'arrive pas à comprendre comment approfondir le tableau.Comment interroger cet objet 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

Pouvez-vous montrer le code que vous avez essayé jusqu'à présent? Et qu'essayez-vous de faire? Je devine boucle à travers le panier [0]. – bluetoft

+0

La "notation par points" réelle est '' cart.0 "' pour émettre une "requête" vers MongoDB, ce qui est différent de la syntaxe JavaScript. Ce n'est vraiment pas clair quelle "requête" vous voulez faire, puisque vous ne le dites pas réellement. Votre contenu interne de '' items ''est un problème. Vous avez utilisé "named keys" au lieu de créer les "items" membres d'un tableau. En fait, il semble que '' cart '' a été créé en un seul tableau d'éléments dans ** error **, alors qu'en fait vous vouliez que le tableau soit les "items". Ou du moins c'est ce que la structure "devrait" être à la place. –

Répondre

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) 
 
})

Depuis votre panier item.items est un objet. Vous pouvez utiliser Object.keys ou Object.values pour faire défiler les propriétés d'un objet.

+0

Cela a fonctionné! J'étais capable de boucler correctement. Merci pour la réponse rapide et plus encore avec peu d'informations (désolé je suis nouveau à cela), mais merci encore! – cisco

+0

@cisco Voir ma mise à jour ... vous pouvez également utiliser Object.values ​​(probablement plus facile) – bluetoft