Ich lese Wert von PID aus Firebase-Datenbank und dann mit diesem PID-Wert, ich hole weitere Werte aus der Datenbank.Abrufen und Anzeigen von Daten aus Firebase braucht Zeit
//fetching pid
firebaseRef.once("value")
.then(function(snapshot) {
snapshot.forEach(function(childSnapshot) {
//getting key of the child
var pid = childSnapshot.key;
// childData will be the actual contents of the child
var childData = childSnapshot.val();
pid[i].id = "pid" + (i + 1);
document.getElementById(pids[i].id).innerText = pid;
i++;
});
});
//displaying marks
var pid1 = document.getElementById("pid1").innerHTML;
guideRef = firebase.database().ref("internal").child(pid1).child("guide");
guideRef.child("report").once('value').then(function(snapshot) {
document.getElementById(reportGuideMarks).value = snapshot.val();
});
Aber runnning diesen Code bekomme ich diesen Fehler:
Uncaught Error: Firebase.child failed: First argument was an invalid path: "". Paths must be non-empty strings and can't contain ".", "#", "$", "[", or "]"
Der pid Fehler zurückzuführen ist null PID1 ist. Aber wenn ich eine Verzögerung von 3 Sekunden auf den "Anzeigemarkierungen" setze, läuft der Code perfekt.
Die angezeigten Markierungen werden ausgeführt, noch bevor die Werte von pid gesetzt wurden.
Es dauert ein paar Sekunden, um den Wert von pid in der Tabelle festzulegen.
Was ist das Problem? Warum dauert das Laden der Datenbankwerte so lange? Oder ist es ein Problem mit der Einstellung des Wertes?
definieren 'var pid;' draußen vor dem '.once', nicht wahr? Gleiches gilt für 'pid1'. Was ist "[i]"? Ich sehe nicht, dass "ich" deklariert wurde, d. H. Du verwendest keine for-Schleife, was du für "Jeder" tust. Schließlich verschachteln Sie '.once' Methoden? Könnte "provey.all" verwenden oder diese nicht verschachteln oder die ".thens" verketten? –