Zugriff auf das untergeordnete Element des json-Objekts mit node.js

8

In meiner node.js-App erhalte ich Werte vom mongodb-Server und möchte sie in eine CSV-Datei konvertieren. Das übergeordnete Element ist einfach aus der Datenbank zugänglich und wird in der CSV-Datei angezeigt, aber das Unterelement wird nicht angezeigt. t zugegriffen werden ..

JSON-Struktur:

%Vor%

Mein Code:

%Vor%

Alle Werte außer dem Unterelement des Zeitfensters werden angezeigt. Wie kann ich von der Datenbank aus auf das Unterelement des JSON zugreifen und alle Werte in einer CSV-Datei anzeigen lassen?

    
Subham 08.12.2014, 09:42
quelle

8 Antworten

2

Eine einfache Möglichkeit, auf verschachtelte Elemente zuzugreifen, finden Sie in der Antwort zu Folgethread ( Zugriff auf verschachtelte Datenstrukturen ).

  

Eine verschachtelte Datenstruktur ist ein Array oder Objekt, das sich auf andere Arrays oder Objekte bezieht, d. h. seine Werte sind Arrays oder Objekte. Auf solche Strukturen kann zugegriffen werden, indem nacheinander Punkt- oder Klammernotation angewendet wird.

     

Wie wir sehen können, ist timeSlot ein Objekt, daher können wir auf seine Eigenschaften mit Punktnotation zugreifen. Die Eigenschaft items wird wie folgt aufgerufen:

%Vor%
  

Alternativ hätten wir Klammern für jede der Eigenschaften verwenden können, insbesondere wenn der Name Zeichen enthält, die die Verwendung der Punktnotation ungültig gemacht hätten:

%Vor%

Sobald Sie alle Daten haben, die Sie benötigen, sollte die Erstellung der CSV-Datei ziemlich einfach sein:)

    
trolologuy 05.08.2016 10:44
quelle
1

Versuchen Sie wie folgt

%Vor%     
Aikon Mogwai 04.08.2016 18:11
quelle
0

Versuchen Sie, user.timeslot.fromTime & amp; & amp; Machen Sie einen Schlüssel / Wert für jedes Unterelement

    
Islam Ahmed 08.12.2014 11:07
quelle
0

Versuchen Sie es so. Dadurch werden alle Daten aus dem timeSlot-Objekt in eine einzelne Zeichenfolge zusammengeführt. Sie können diese Zeichenfolge so oft formatieren, wie Sie möchten. Code add in forEach Schleife.

%Vor%

Hoffe, das hilft.

    
Mykola Borysyuk 03.08.2016 20:38
quelle
0

Das Problem ist, dass Sie in Ihrer forEach-Schleife, in der Sie über die Variable values iterieren, auf die Eigenschaft timeslot von user statt auf den Wert timeSlot von user zugreifen. Denken Sie daran, Groß- und Kleinschreibung ist wichtig!

Hier ist eine Geige, die zeigt, dass das Ändern der Groß- / Kleinschreibung der Objekteigenschaft in den Zeilen 24 und 25 das Problem löst

Im verknüpften Beispiel binde ich dieses Objekt auch so an, dass ich es in das Dokument schreiben kann und die Ausgabe klar sehen kann. Ich würde dagegen empfehlen, weil Sie später Probleme beim Parsen bekommen könnten. Stattdessen sollten Sie eine Zeichenfolge erstellen, indem Sie auf Eigenschaften dieses Objekts zugreifen.

Wie auch immer, der Grund für einen Fehler war die Groß- / Kleinschreibung in Ihrem ursprünglichen Code. Ich hoffe das hilft.

    
rdgd 04.08.2016 04:47
quelle
0

Wenn Sie strukturierte Daten (hier: JSON) lesen und diese in abgeflachte Daten (hier: csv) konvertieren wollen, müssen Sie entscheiden, wie Sie die Abflachung ausführen.

Mit anderen Worten - Ihre csv-Zielstruktur könnte die folgende sein:

%Vor%

Sobald Sie entschieden haben, dass Sie die in timeSlot angegebene Struktur auf diese Weise reduzieren wollen, können Sie die Kommentare von @Aikon Mokwai einfach ohne die stringify verwenden - verwenden Sie die Array-Notation wie von @trolologuy beschrieben lies die Struktur:

%Vor%

Anschließend muss derjenige, der den CSV liest, verstehen, dass Sie die Daten geglättet haben, aber keine Struktur parsen müssen, da Sie wirklich flache Datensätze bereitstellen (wie CSV es am liebsten mag).

Ich hoffe, es hilft!

    
Dr. Rhino 09.08.2016 23:20
quelle
0

Hi benutze asynchrone foreach-Schleife, um oben zu erreichen. Hier sind Details wie es funktioniert.

Async-Schleife in nodejs

    
Love-Kesh 10.08.2016 11:53
quelle
0
%Vor%

genießen:)

siehe jsfiddle

    
Tarik FAMIL 10.08.2016 15:45
quelle

Tags und Links