Ich versuche eine Variable zu lesen, die in meinem Javascript definiert ist. Es ist eine Get-Anfrage von einer MongoDB. Die gesamte Datenbank wird dann unter einer Variablen gespeichert und vom HTML gelesen und angezeigt.

Die Get-Anfrage von der MongoDB hat eine Ausgabe wie folgt: (Nehmen wir an, dies wird unter der Variablen database gespeichert):

[
  {
      0:
           {
                TITLE1: valueone
           }
  },
  {
      1:
           {
                TITLE2: valuetwo
           }
  }
]

Mein HTML sieht so aus:

<p> {{ database?.TITLE1 }} </p>

Ich erhalte den Fehler Cannot read property '0' of undefined. Ich verstehe das, weil ich [0] definieren muss, um TITLE1 lesen zu können.

Auf dieser Grundlage habe ich Folgendes versucht:

<p> {{ database?[0].TITLE1 }} </p>

Dies hat den folgenden Fehler: Fehler beim Analysieren von Vorlagen: Parser-Fehler: Datenbank für bedingte Ausdrücke? [0] .TITLE1 erfordert alle 3 Ausdrücke am Ende des Ausdrucks [{{Datenbank? [0] .TITLE1}}]

<p> {{ database?.[0].TITLE1 }} </p>

Dies hat den folgenden Fehler: Fehler beim Analysieren von Vorlagen: Parser-Fehler: Unerwartetes Token [, erwarteter Bezeichner oder Schlüsselwort in Spalte 7 in [{{Datenbank ?. [0] .TITLE1}}]

<p> {{ database?.0.TITLE1 }} </p>

Dies hat den gleichen Fehler wie oben.

Was ist der richtige Weg, um die Werte lesen zu können, nach denen ich suche? Im HTML sollte die Ausgabe valueone sein.

1
Dritz 26 Juni 2019 im 11:01

3 Antworten

Beste Antwort

Da es sich bei Ihrer Datenbank um ein Array handelt, müssen Sie [0] verwenden, um das erste Element abzurufen, und Ihr Schlüssel ist die Nummer. Sie müssen also ['0'] verwenden, um den Eigenschaftswert abzurufen. Können Sie auch? um das Objekt null vor der Verwendung von TITLE1 zu überprüfen

Schließlich können Sie {{ database[0]['0']?.TITLE1 }} verwenden

Demo https://stackblitz.com/edit/angular-o79rra

0
Hien Nguyen 26 Juni 2019 im 08:27

Nun, ich meine, irgendwann muss man ein wenig über JS-Grundlagen nachdenken, anstatt alles auszuprobieren, bis es funktioniert ...

Aus dem von Ihnen angegebenen Code ergibt sich die Syntax

{{ data[0]['0'].TITLE1 }}
0
26 Juni 2019 im 08:25

Versuchen

 <p> {{ database[0]['0']?.TITLE1 }} </p>

Mach es dynamisch durch:

    <p *ngFor="let item of database; let i = index">
       {{item[i]['TITLE' + (i + 1)]}}
    </p>
0
Adrita Sharma 26 Juni 2019 im 08:31