2017-08-29 3 views
0

Ich versuche, dieses Mongodb-Objekt abzufragen, kann aber nicht zu bestimmten Datenpunkten gelangen, die ich brauche. Wie kann ich die imagePath-Daten sagen? Die Daten werden in einer Tabelle namens orders gespeichert. Ich habe Punktnotation, d. H. Order.cart [0] ausprobiert, kann aber nicht herausfinden, wie ich tiefer in das Array kommen kann.Wie kann ich dieses Mongodb-Objekt abfragen?

{ 
    "_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

Können Sie den Code anzeigen, den Sie bisher ausprobiert haben? Und was versuchst du zu tun? Ich vermute, Schleife durch den Warenkorb [0] .Artikel? – bluetoft

+0

Die tatsächliche "Punktnotation" ist '" cart.0 "' zum Ausgeben einer "Abfrage" an MongoDB, die sich von der JavaScript-Syntax unterscheidet. Es ist wirklich nicht klar, was "Abfrage" Sie tun möchten, da Sie es eigentlich nicht sagen. Dein innerer Inhalt von "Items" ist ein Problem. Sie haben "benannte Schlüssel" verwendet, anstatt die "Elemente" eines Arrays zu erstellen. In der Tat sieht es so aus, als ob "cart" zu einem einzelnen Element Array in ** error ** gemacht wurde, wo Sie eigentlich das Array als "items" haben wollten. Oder zumindest sollte die Struktur stattdessen "sein". –

Antwort

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

Da Ihr Warenkorb item.items ist ein Objekt. Sie können Object.keys oder Object.values nutzen, um Objekteigenschaften durchzuschleifen.

+0

Das hat funktioniert! Ich konnte richtig durchschleifen. Danke für die schnelle Antwort und noch mehr mit wenig Information (Entschuldigung, ich bin neu hier), aber danke nochmal! – cisco

+0

@cisco Siehe meine aktualisierte Antwort ... Sie können auch Object.values ​​nutzen (wahrscheinlich einfacher) – bluetoft

Verwandte Themen