Vérifiez si la valeur existe dans la base de données Firebase
P粉354602955
P粉354602955 2023-08-27 19:51:39
0
2
435
<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粉354602955
P粉354602955

répondre à tous(2)
P粉364642019

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
              });
            }
        });
P粉125450549

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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal