Myślę, że jeśli zrozumiem podstawowe pytanie, krótka odpowiedź brzmi, że nie ma sposobu na wymuszenie pustej tablicy w bazie Firebase. Istnieją jednak paradygmaty, które mogą działać lepiej niż to, co masz powyżej.
Należy pamiętać, że Firebase to środowisko działające w czasie rzeczywistym. Liczba samochodów i wypadków może (i będzie) zmieniać się w każdej chwili. Najlepiej traktować wszystko jako nowe dane docierające w czasie rzeczywistym i unikać nawet myślenia o istnieniu lub nie istnieje.
// 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
});
});
});
Uwaga: nie ma potrzeby stosowania logiki typu if exists/unless
. Zauważ, że prawdopodobnie będziesz również chciał monitorować child_removed
na cars
i people
i zadzwonić pod numer ref.off()
, aby zatrzymać odsłuchiwanie określonych dzieci.
Jeśli z jakiegoś powodu chcesz trzymać z modelu statycznego, następnie forEach staną się twoim przyjacielem:
// 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 */ });
});
});
});
Uwaga sposób, nawet z foreach nie ma potrzeby „istnieje lub że” coś w rodzaju logika.
Wielkiej odpowiedzi Kato! –