Maison > Questions et réponses > le corps du texte
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 }); } });
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); } });
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 orderByChild
和 equalTo
. 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