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)?
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.
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
})
}
})
})
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 !!' ;
});