Lesen von Daten Aus der FB-Datenbank
Will ich Lesen bestimmter Daten aus der FB-Datenbank. Was ich derzeit mache, ist hier.
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
DatabaseReference myRef = database.child("profiles/");
myRef.child(phoneNo).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
user = dataSnapshot.getValue(User.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
Methode zum schreiben in DB
public void writeToDBProfiles(Object data,String phoneNo) {
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
DatabaseReference myRef = database.child("profiles/" + phoneNo);
myRef.setValue(data);
}
Aber seine null zurückgeben... Jede Hilfe wird geschätzt.
Sie haben lese-Berechtigung auf die Daten? Siehe stackoverflow.com/documentation/firebase/5548/...
der snap-shot, das er Aktien hat die Standard-Sicherheits-Regeln-banner auf der Oberseite heißt das nicht, daß sein .schreiben und .gelesen werden beide auth != null ? In diesem Fall, wenn er schreiben kann, dann sollte er in der Lage sein zu Lesen, wie der Nutzer ist berechtigt, nicht wahr? Bitte korrigieren Sie mich, wenn falsch bin.
Ich vermisste, dass banner, aber in der Tat es sein sollte. Das wahrscheinlichste problem ist, dass der Benutzer nicht authentifiziert wurde. Etwas, das Sie können ganz einfach vor Ort, wenn Sie fügen Sie eine einfache
Ich habe die Erlaubnis.
OK. Dies beginnt zu fühlen, ein bisschen wie interaktives debugging, für die StackOverflow ist schlecht geeignet. Können Sie reproduzieren Sie das problem mit einem hard-codierten Wert anstelle des
der snap-shot, das er Aktien hat die Standard-Sicherheits-Regeln-banner auf der Oberseite heißt das nicht, daß sein .schreiben und .gelesen werden beide auth != null ? In diesem Fall, wenn er schreiben kann, dann sollte er in der Lage sein zu Lesen, wie der Nutzer ist berechtigt, nicht wahr? Bitte korrigieren Sie mich, wenn falsch bin.
Ich vermisste, dass banner, aber in der Tat es sein sollte. Das wahrscheinlichste problem ist, dass der Benutzer nicht authentifiziert wurde. Etwas, das Sie können ganz einfach vor Ort, wenn Sie fügen Sie eine einfache
throw databaseError.toException()
zu den onCancelled()
- und eine Abschluss-listener, um die setValue()
. Beide sind dokumentiert auf der Seite, die ich verlinkte.Ich habe die Erlaubnis.
OK. Dies beginnt zu fühlen, ein bisschen wie interaktives debugging, für die StackOverflow ist schlecht geeignet. Können Sie reproduzieren Sie das problem mit einem hard-codierten Wert anstelle des
phoneNo
? Können Sie reproduzieren Sie es mit einem User
Klasse, hat nur eine einzige Eigenschaft? Kannst du uns erzählen, dass die minimal-Klasse? Auch mir humor und Fehlerbehandlung code in onCancelled()
und in Ihrem Aufruf setValue()
.InformationsquelleAutor Hassan Niazi | 2016-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, um eine bestimmte Daten unter einer der Telefonnummern, dann können Sie mit einer Abfrage wie dieser
Ich denke, das ist die beste Methode.
InformationsquelleAutor Inducesmile
Ok, ich habe es aussortiert. der obige code in der Frage ist vollkommen in Ordnung und sollte funktionieren .
Ich bin zu erklären, für die späteren Nutzer, der vielleicht das gleiche Problem wegen der Fehler, die ich gemacht habe.
den singleSnapshot.getValue(User.class); wurde nicht gegossen, das Ergebnis auf der Benutzer-Klasse, weil Sie beim hochladen der Daten, d.h. in setValue ich hatte meine
photoUrl gleich null, und als Ergebnis können Sie sehen, die photoUrl ist nicht vorhanden in meiner Kind-Knoten. Also was ich glaube (und vielleicht jemand soll mich korrigieren), dass meine singleSnapshot.getValue-Methode nicht in der Lage war zu werfen die Folge.
So, für heute habe ich weggelassen photoUrl aus meiner User-Klasse wird es, wenn ich anfangen zu arbeiten mit entsprechenden Modul.
Nochmals vielen Dank an alle für all die Anregungen und Hilfe.
InformationsquelleAutor Hassan Niazi
AKTUALISIERT:
Die Fehler in deinen aktualisierten code ist hier.
Wenn Sie Daten hinzufügen, wie myRef.setValue(data) dann müssen Sie genau angeben, für welches Kind ist das abrufen von Daten oder , wenn Sie aktualisieren möchten alle Kinder auf einmal dann müssen Sie tun, Atomic data update mit HashMap() und updateChildren () - Methode.
Also für bestimmte child-update der richtige Weg ist dieser:
Ich ermutige Sie, dies zu Lesen offizielles FB-blog zu verstehen, wie zu aktualisieren, alle Kinder in einem gehen mit HashMap().
Lassen Sie mich wissen, wenn es ändert sich nichts für Sie.
Was ist mit Ihren Daten? .. Sind Sie die Aktualisierung aller Kinder oder etwas bestimmtes?
Während auf der update-Teil I update bestimmte childs mit setValue.
Aber das Problem ist ich bin nicht in der Lage zur Abfrage bestimmter Daten aus der Feuerstellung.
überprüfen Sie die aktualisierte Antwort, wenn Sie das Problem lösen wird.für bestimmte updates für ein Kind.
InformationsquelleAutor Nishant Dubey
während die Lage der Datenbank von ur, FB, u sollte immer, dass der Ordner-name in Hochkommata verwenden
DatabaseReference myRef = - Datenbank.Kind("profile");
statt
DatabaseReference myRef = - Datenbank.Kind("profile/");
InformationsquelleAutor Syyam Noor