Ich denke, wenn ich die Kernfrage verstehe, ist die kurze Antwort, dass es keine Möglichkeit gibt, ein leeres Array in Firebase zu erzwingen. Es gibt jedoch einige Paradigmen, die besser funktionieren als das, was Sie oben haben.
Denken Sie daran, dass Firebase eine Echtzeitumgebung ist. Die Anzahl der Autos und Unfälle kann (und wird) sich jederzeit ändern. Es ist am besten, alles als neue Daten zu behandeln, die in Echtzeit ankommen und es vermeiden, überhaupt darüber nachzudenken, ob es existiert oder nicht existiert.
// fetch all the people in real-time
rootRef.child('people').on('child_added', function(personSnapshot) {
// monitor their cars
personSnapshot.ref().child('cars', 'child_added', function(carSnapshot) {
// monitor accidents
carSnapshot.ref().child('accidents', 'child_added', function(accidentSnapshot) {
// here is where you invoke your code related to accidents
});
});
});
Beachten Sie, wie es keine Notwendigkeit für if exists/unless
Typ-Logik ist. Beachten Sie, dass Sie wahrscheinlich auch child_removed
unter cars
und people
überwachen und ref.off()
anrufen möchten, um bestimmte Kinder nicht mehr zu hören.
Wenn Sie aus irgendeinem Grund mit dem statischen Modell bleiben wollen, dann forEach wird Ihr Freund geworden:
// fetch all the people as one object, asynchronously
// this won't work well with many thousands of records
rootRef.child('people').once('value', function(everyoneSnap) {
// get each user (this is synchronous!)
everyoneSnap.forEach(function(personSnap) {
// get all cars (this is asynchronous)
personSnap.ref().child('cars').once('value', function(allCars) {
// iterate cars (this is synchronous)
allCars.forEach(function(carSnap) { /* and so on */ });
});
});
});
Beachten Sie, wie auch bei forEach, gibt es keine Notwendigkeit für ist eine Art „oder es sei denn, existiert“ Logik.
Große Antwort Kato leer ist! –