2016-07-22 14 views
1

erstellt werden Ich versuche, die polymerfire/firebase-query zu verwenden, um meine in Firebase gespeicherten Daten unter Verwendung der Vaadin Expense Manager Demo zu laden. Insbesondere versuche ich, das <vaadin-pouchdb> Element durch eine Kombination von <firebase-query> und </app-indexeddb-mirror> zu ersetzen.

https://github.com/vaadin/expense-manager-demo/blob/master/src/overview-page.html
<firebase-query id="query" 
       log 
       app-name="my-firebase" 
       path="[[user.uid]]" 
       data="{{expenses}}"> 
</firebase-query> 

Wenn ich versuche, die Seite zu laden, erwarte ich mein Netz sehen Auffüllen mit Testdaten; stattdessen erhalte ich folgende Fehler.

console.log

firebase.js:284 Uncaught TypeError: Cannot create property '$key' on string 'foo'

firebase.js:284 Uncaught TypeError: Cannot create property '$key' on string 'new'

firebase.js:284 Uncaught TypeError: Cannot create property '$key' on number '123'

Der Wert von {{expenses}} Ich erwarte, dass an die App geliefert werden über <firebase-query> ist folgende:

expenses = [ 
      { 
       total : 123 , 
       status : 'new' , 
       merchant : 'foo' , 
      } 
      ] 

Was diesen Fehler zu schaffen könnte? Warum gibt es eine Eigenschaft '$key', versucht, erstellt zu werden? Oh, Moment mal. Könnte es sein, dass mit den Ausgaben kein Schlüssel verknüpft ist, da sie in meinem Firebase gespeichert sind?

Edit:

Hier ist, was die Daten wie in Firebase aussieht:

my-firebase 
| 
- my-userid-abc-123 
    |- merchant: "foo" 
    |- status: "new" 
    |- total: 123 
+1

Können Sie zeigen, wie Ihre tatsächlichen Daten in der Datenbank aussehen? Speichern Sie Dinge mit numerischen Tasten? 'firebase-query' wurde entwickelt, um mit Objektdaten mit String-Schlüssel zu arbeiten. –

+0

@ MichaelBleigh: Ja. Deine Instinkte waren korrekt. Ich habe keine Schlüssel für die gespeicherten Daten. * Siehe obige Änderungen, die die Struktur der gespeicherten Daten widerspiegeln. * Wie kann ich dann mein Raster auffüllen? Wenn ich zurückgehen und die Daten mit Schlüsseln speichern muss, lassen Sie es mich wissen. Es klingt, als wäre das aus einer Datenstrukturperspektive das Beste, um dies zu tun? – Mowzer

+1

Es sieht so aus, als ob Sie wahrscheinlich 'fire-base-document' möchten, das nur das gesamte Dokument in den Pfad lädt. Ich würde auch stark die Strukturierung Ihrer Daten mit z. '/ users/my-userid-123', anstatt die Benutzer direkt auf die Stammebene zu setzen. Dann könntest du einfach '' oder um alle Benutzer '' –

Antwort

2

Mit <firebase-query> an Orten, an denen alle Kinder haben primitive (boolean, string, number) Werte nicht unterstützt wird. Bitte beachten Sie, diese Werte in Objekten verschachteln.

+1

Was!?! Ja wirklich!?! Danke für die Antwort, aber wer hat das entworfen? –