Question Vérifiez si la valeur existe dans la base de données Firebase


Existe-t-il une méthode dans firebase, qui peut vérifier si la valeur existe dans la base de données? Firebase a la méthode .exists (), mais selon docs, il ne vérifie que les clés.

J'ai la structure suivante:

{
  "users": {
    "-KKUmYgLYREWCnWeHCvO": {
      "fName": "Peter",
      "ID": "U1EL9SSUQ",
      "username": "peter01"
    },
    "-KKUmYgLYREWCnWeHCvO": {
      "fName": "John",
      "ID": "U1EL5623",
      "username": "john.doe"
    }
  }
}

Je veux vérifier si ID avec valeur U1EL5623existe


21
2018-06-19 17:38


origine


Réponses:


le exists() la méthode fait partie de la snapshot objet renvoyé par les requêtes Firebase. N'oubliez donc pas que vous ne pourrez pas récupérer les données pour vérifier si elles existent ou non.

ref.child("users").orderByChild("ID").equalTo("U1EL5623").once("value",snapshot => {
    if (snapshot.exists()){
      const userData = snapshot.val();
      console.log("exists!", userData);
    }
});

Observations:

Dans le cas où vous vous trouvez dans un scénario différent dont vous avez exactement le chemin ref dans lequel l’objet pourrait être, vous n’aurez pas besoin d’ajouter orderByChild et equalTo. Dans ce cas, vous pouvez récupérer directement le chemin de l'objet afin qu'il ne nécessite aucun traitement de recherche de la part de Firebase. Aussi, Si vous connaissez l'une des propriétés que l'objet doit avoir, vous pouvez le faire en tant qu'extrait de code ci-dessous et le faire récupérer uniquement cette propriété et non l'objet entier. Le résultat sera une vérification beaucoup plus rapide.

//every user must have an email
firebase.database().ref(`users/${userId}/email`).once("value", snapshot => {
   if (snapshot.exists()){
      console.log("exists!");
      const email = snapshot.val();
    }
});

36
2018-06-19 17:53



Ceci est une solution similaire si vous voulez vérifier si un email existe dans firebase

firebase.app().database().ref("shops").orderByChild("email")
   .equalTo(user.email).once("value", snapshot => {

            const userData = snapshot.val();

            // Check if it is a SHOP.
            if (userData) {
              console.log("Shop logged in!");
              this.setState({
                isAdminLoggedIn: false,
                isUserLoggedIn: false,
                isShopLoggedIn: true,
                isNoneLoggedIn: false
              });

            // Check if it is a USER.
            } else {
              console.log("User logged in");
              this.setState({
                isAdminLoggedIn: false,
                isUserLoggedIn: true,
                isShopLoggedIn: false,
                isNoneLoggedIn: false
              });
            }
        });

1
2018-04-18 08:03