Rumah > Soal Jawab > teks badan
P粉3646420192023-08-28 16:24:26
Jika anda ingin menyemak sama ada e-mel wujud dalam Firebase, berikut ialah penyelesaian yang serupa
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
Sebahagian daripada objek. Jadi perlu diingat bahawa anda tidak akan dapat mengelak daripada mendapatkan semula data untuk mengesahkan bahawa ia wujud .
// 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); } });
Jika anda berada dalam senario yang berbeza dan anda mempunyai laluan rujukan tepat di mana objek itu mungkin, tidak perlu menambah orderByChild
和 equalTo
. Dalam kes ini, anda boleh mendapatkan laluan objek secara langsung, jadi tiada pemprosesan carian diperlukan daripada firebase. Selain itu, jika anda mengetahui salah satu sifat yang mesti ada pada objek, anda boleh mengikuti coretan kod di bawah dan minta ia mendapatkan semula sifat itu sahaja dan bukannya keseluruhan objek. Hasilnya akan menjadi pemeriksaan yang lebih cepat.
Sebagai contoh, jika setiap pengguna mempunyai nama pengguna dalam data mereka, anda boleh menggunakan ini:
// 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