Maison  >  Questions et réponses  >  le corps du texte

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

<p>Existe-t-il un moyen dans Firebase de vérifier si une valeur existe dans la base de données ? Firebase a la méthode .exists() mais selon la documentation, elle ne vérifie que la clé. </p> <p>J'ai la structure suivante : </p> <pre class="brush:php;toolbar:false;">{ "utilisateurs": { "-KKUMYgLYREWCnWeHCvO": { "fName": "Pierre", "ID": "U1EL9SSUQ", "nom d'utilisateur": "peter01" }, "-KKUMYgLYREWCnWeHCvO": { "fName": "Jean", "ID": "U1EL5623", "nom d'utilisateur": "john.doe" } } }</pré> <p>Je souhaite vérifier si l'ID avec la valeur <code>U1EL5623</code> </p>
P粉354602955P粉354602955440 Il y a quelques jours420

répondre à tous(2)je répondrai

  • P粉364642019

    P粉3646420192023-08-28 16:24:26

    Si vous souhaitez vérifier si un email existe dans Firebase, voici une solution similaire

    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
                  });
                }
            });

    répondre
    0
  • P粉125450549

    P粉1254505492023-08-28 13:53:22

    exists() 方法是 Firebase 查询返回的 snapshot Une partie de l'objet. Alors gardez à l'esprit que vous ne pourrez pas éviter de récupérer les données pour vérifier qu'elles existent .

    // Firebase Namespaced SDK (v8 & older)
    // import firebase as appropriate
    
    const userQueryByID = firebase.database()
      .ref("users")
      .orderByChild("ID")
      .equalTo("U1EL5623");
    
    // using a snapshot listener
    userQueryByID
      .once(
        "value",
        snapshot => {
          if (snapshot.exists()){
            const userData = snapshot.val();
            console.log("exists!", userData);
          }
        }
      );
    
    // OR, using a promise
    userQueryByID.get()
      .then(snapshot => {
        if (snapshot.exists()){
          const userData = snapshot.val();
          console.log("exists!", userData);
        }
      });
    // Firebase Modular SDK (v9+)
    // import each function from "firebase/database"
    
    const rtdb = getDatabase();
    const userQueryByID = query(
      ref(rtdb, "users"),
      orderByChild("ID"),
      equalTo("U1EL5623")
    );
    
    // using a snapshot listener
    onValue(
      userQueryByID,
      snapshot => {
        if (snapshot.exists()){
          const userData = snapshot.val();
          console.log("exists!", userData);
        }
      },
      { onlyOnce: true }
    );
    
    // OR, using a promise
    get(userQueryByID)
      .then(snapshot => {
        if (snapshot.exists()){
          const userData = snapshot.val();
          console.log("exists!", userData);
        }
      });

    Résultats des observations :

    Si vous êtes dans un scénario différent et que vous avez le chemin de référence exact où pourrait se trouver l'objet, il n'est pas nécessaire d'ajouter orderByChildequalTo. Dans ce cas, vous pouvez obtenir directement le chemin de l'objet, donc aucun traitement de recherche n'est requis depuis Firebase. De plus, si vous connaissez l'une des propriétés que l'objet doit avoir, vous pouvez suivre l'extrait de code ci-dessous et lui demander de récupérer uniquement cette propriété au lieu de l'objet entier. Le résultat sera des inspections plus rapides.

    Par exemple, si chaque utilisateur avait un nom d'utilisateur dans ses données, vous pourriez utiliser ceux-ci :

    // Firebase Namespaced SDK (v8 & older)
    // import firebase as appropriate
    
    const usernameRef = firebase.database()
      .ref(`users/${userId}/username`);
    
    // using a snapshot listener
    usernameRef
      .once(
        "value",
        snapshot => {
          if (snapshot.exists()){
            const username = snapshot.val();
            console.log("exists!", username);
          }
        }
      );
    
    // OR, use usernameRef.get() for a promise, as above
    // Firebase Modular SDK (v9+)
    // import each function from "firebase/database"
    
    const rtdb = getDatabase();
    const usernameRef = ref(rtdb, `users/${userId}/username`);
    
    // using a snapshot listener
    onValue(
      usernameRef,
      snapshot => {
        if (snapshot.exists()){
          const username = snapshot.val();
          console.log("exists!", username);
        }
      },
      { onlyOnce: true }
    );
    
    // OR, use get(usernameRef) for a promise, as above

    répondre
    0
  • Annulerrépondre