Semak sama ada nilai wujud dalam pangkalan data firebase
P粉354602955
P粉354602955 2023-08-27 19:51:39
0
2
367

Adakah terdapat cara dalam firebase untuk menyemak sama ada nilai wujud dalam pangkalan data? Firebase mempunyai kaedah .exists() tetapi menurut dokumentasi ia hanya menyemak kunci.

Saya mempunyai struktur berikut:

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

Saya ingin menyemak sama ada ID dengan nilai U1EL5623

P粉354602955
P粉354602955

membalas semua (2)
P粉364642019

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粉125450549

    exists()方法是 Firebase 查询返回的snapshotSebahagian daripada objek. Jadiperlu 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); } });

    Hasil pemerhatian:

    Jika anda berada dalam senario yang berbeza dan anda mempunyai laluan rujukan tepat di mana objek itu mungkin, tidak perlu menambahorderByChildequalTo. 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
      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!