2016-12-12 3 views
1

Hier ist der Code, wenn ich die Daten auf Firebase bin drängen:Abfragen von Firebase-Daten nach dem Verwenden von .push() zum Hinzufügen von Daten?

firebase.database().ref(`booklogs/${uid}/${book_id}`).push(page_id) 

booklogs : 
{HUMjSHxVKAPfVXzOId9zCBkGOgv1:{ 
book28917: { 
-KYp4FdYYODDZG1FX-Pb: 1 
} 
} 
} 

Mein Problem ist, wenn ich die Daten abfragen, der Kindknoten der ${book_id} umfasst die Push-Taste, aber ich möchte nur bekommen der Wert ist 1 und nicht die Taste drücken.

Der Code, den ich zu Abfrage verwenden ist:

var booklogs = db.ref(`booklogs/${uid}/${project}`); 

booklogs.once('value') 
    .then((snapshot) => { 
    console.log(`pages viewed are ${snapshot.key}: ${snapshot.val()}`); 
    console.dir(snapshot.val()); 
    }).catch((error) => { 
    console.log(`Error : ${error}`); 
    }); 

Die Daten in der Konsole zurückgekehrt ist:

pages viewed are 2634651: [object Object]                    
{ '-KYp4FdYYODDZG1FX-Pb': 1 } 

Jede Eingabe wäre sehr geschätzt. Vielen Dank!

+0

Was Sie abfragen auf versuchen? –

Antwort

1

Wenn Sie nur die ‚1‘ und nicht die Push-Taste, versuchen .set()

firebase.database().ref(`booklogs/${uid}/${book_id}`).set(page_id) 

verwenden, wird von dem Objekt loszuwerden und Sie nur den Wert, die Sie wollten. Push erzeugt automatisch einen Schlüssel für jeden hinzugefügten Wert, so dass Sie immer ein Objekt zurückbekommen. Aus der Firebase-Dokumentation - "Für grundlegende Schreibvorgänge können Sie set() verwenden, um Daten in einer angegebenen Referenz zu speichern und vorhandene Daten in diesem Pfad zu ersetzen."

https://firebase.google.com/docs/database/web/read-and-write

+0

Danke für die Antwort @Shane Was ich getan habe, war .push(). Set (object); Der Grund ist, wenn ich .set() verwende löscht alles, was zuvor ein Kind des Knotens war, die ich anstellte. Also mit .push(). Set() konnte ich ein weiteres Element zum Buch_ID/Pushkey/Node hinzufügen. – Dave

+0

Lustig, obwohl ich in der Lage bin, die Vergangenheit der Push-Taste mit diesem Code in angularfire 2 'code' ngOnInit() { this.af.database.list (' booklogs/$ {uid}/$ {book_id} ') abzufragen) .subscribe ( data => { console.log ('diese Buchprotokolldaten sind: $ {data [0] .pageOrder}'); // gibt jetzt nur den Wert 1 zurück console.dir (data); }, (Fehler) => {console.log ('book log error: $ {Fehler}');} ) } – Dave

+0

@Dave, also versuchen Sie, mehrere Ergebnisse in die '.ref (booklogs/$ {uid}/$ {book_id}) 'ref, dann nur die tatsächlichen Werte abfragen und nicht die Schlüssel, richtig? – Shane

Verwandte Themen