Google firebase vérifier si l'enfant existe

dans mon application, je dois vérifier si un élément donné de ma base de données sur firebase a un enfant avec un prénom. J'ai espéré que cela pourrait être fait en utilisant quelque chose du genre:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();

if (rootRef.childExists("name")) {
    //run some code
}

j'ai cherché mais je n'ai rien trouvé d'utile.

25
demandé sur CopsOnRoad 2016-05-23 20:35:27

2 réponses

Edit 2; worth put on top: je pense qu'il vaut la peine de mentionner que c'est en fait le téléchargement de toutes les données à cet instantané juste pour vérifier si des données existent. Vous devriez être attentif ici. Si la référence est énorme (par exemple,en fait, la référence racine et non un enfant/propriété spécifique) alors vous devez trouver un noeud plus profond que vous pouvez utiliser pour vérifier l'existence ou concevoir votre structure de données différemment afin qu'une vérification efficace soit possible.

Un la référence à la base de données est effectivement L'URL de ces données. Vous voulez en fait get données pour voir si l'enfant existe. C'est pourquoi la méthode que vous semblez chercher sur DataSnapshot.

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  void onDataChange(DataSnapshot snapshot) {
    if (snapshot.hasChild("name")) {
      // run some code
    }
  }
});

maintenant, ce motif semble un peu étrange. Vous lisez toute la base de données juste pour voir si "nom" existe. Vous pouvez faire cela un peu plus efficace en écoutant rootRef.child("name") et puis il suffit de vérifier si snapshot.exists().

Si vous êtes essayer de faire validation ici, et pas contrôler le flux, vous devriez envisager de mettre ce code dans votre rules.json.

modifier: j'ai utilisé à l'origine le mauvais nom de fonction (childExists au lieu de hasChild)

54
répondu Thomas Bouldin 2017-08-08 19:25:33

Essayez d'utiliser .childexists en combinaison avec .equalTo("Your specific name")

2
répondu Michel 2016-05-23 18:13:45