web-dev-qa-db-fra.com

Comment écouter les changements de données à plus d'un emplacement particulier dans Firebase?

J'utilise Firebase comme base de données en temps réel pour l'application mobile que je développe (SDK Web JS), la structure est comme ci-dessous dans la capture d'écran, la clé = e-mail, chaque clé a les informations utilisateur mobile et la coordination GPS du mobile emplacement à l'intérieur de node = "path"

Comment écouter sur tout le "chemin" de tous les emails (utilisateurs)?

enter image description here

12
kimo

Directement depuis Firebase documents :

valeur: lire et écouter les modifications apportées au contenu entier d'un chemin.

var ref = firebase.database().ref("users");
firebase.database().ref().on('value', function(snapshot) {
    // Do whatever
});

Cette fonction s'exécutera une fois lorsqu'elle sera lancée et une fois de plus pour chaque modification des données sous le chemin. snapshot renverra tout le contenu de user/ ce qui représente beaucoup de données à renvoyer pour chaque modification. Vous pouvez modifier le ref en conséquence.

19
theblindprophet

la solution en code:

var ref = new Firebase("https://<your Firebase>/mobile/users");

   users.forEach(function (childSnapshot) {
                // childSnapshot == mobile/users/email

                var data = childSnapshot.val();

                childSnapshot.forEach(function (path) {
                    if (path.key() == 'path') {

                        //create reference for each path
                        var pathRef = path.ref();

                        pathRef.limitToLast(1).on('child_added', function (childSnapshot, prevChildKey) {

                            // now you are listening on all "path" under each user/email

                        })
                    }
                })
            })
1
kimo

Vous pouvez écouter des événements spécifiques si vous le souhaitez:

// Get a reference to the database service
var database  = firebase.database();
var usersRef  = database.ref('whatever/users');

usersRef.on('child_added', (snapshot) => {
  console.log('user was added !!');
});

usersRef.on('child_removed', (snapshot) => {
  console.log('user was removed !!' );
});


usersRef.on('child_changed', (snapshot) => {
     console.log('user was changed !!' ;
});
1
Saif Masadeh