1

Disons que ma base de données se présente comme suit:Fonctions Cloud pour Firebase: Comment puis-je déclencher une fonction de base de données pour une clé enfant spécifique de tous les enfants

project 
└── users 
    ├── safuhf8sdf76fs 
    │ ├── name: 'William' 
    │ └── favoriteColor: 'blue' 
    ├── sffuef5srf72fd 
    │ ├── name: 'Emily' 
    │ └── favoriteColor: 'yellow' 
    └── rfdu4ffsgf42gi 
     ├── name: 'Sam' 
     └── favoriteColor: 'red' 

Je suis en train de créer une fonction Cloud qui est déclenché lorsque la valeur favoriteColor d'un objet user est modifiée/ajoutée/supprimée.

La partie qui me pose problème est la création de la référence à cette touche.

Je sais que je pouvais écouter tout et tous les changements aux utilisateurs avec

exports.updatedFavoriteColor = functions.database.ref('/users').onWrite(event => { ... });

puis il suffit de vérifier les données modifiées pour voir si elle était favoriteColor.

Bien que cela fonctionnerait, je préfère de loin un déclencheur qui est spécifiquement écoute pour le type de clé comme objets- favoriteColor de tous les utilisateurs quelque chose ceci: functions.database.ref('/users').child(?).child('favoriteColor')

Ma fonction serait préférable appelée lorsque le favoriteColor de William ou Emily est modifié, mais pas lorsque le name de Sam est modifié, par exemple. Est-ce possible?

Répondre

1

Je pense que je l'ai compris avec plus de creuser.

Le Firebase docs suggèrent que je peux faire ce qui suit:

exports.updatedFavoriteColor = functions.database.ref('/users/{pushId}/favoriteColor').onWrite(event => { ... }); 

Cela devrait obtenir déclenché par le changement de favoriteColor pour tout utilisateur, où l'utilisateur particulier étant mis à jour est représenté par la {pushId} dans la référence. Dans la fonction elle-même, vous pouvez référencer l'ID utilisateur avec event.params.pushId

+2

* firebaser ici * C'est en effet la façon de le faire. Petite remarque: le 'event.data' dans ce cas ne contiendra que la valeur précédente et la nouvelle valeur de' favoriteColor'. Si vous avez besoin du nœud utilisateur entier, vous devrez le charger séparément. Voir aussi https://stackoverflow.com/questions/45491967/firebase-get-parrent-of-parent-data-before-delete/45492805#45492805 –