Semak sama ada nilai wujud dalam pangkalan data firebase
P粉354602955
P粉354602955 2023-08-27 19:51:39
0
2
452
<p>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. </p> <p>Saya mempunyai struktur berikut: </p> <pre class="brush:php;toolbar:false;">{ "pengguna": { "-KKUmYgLYREWCnWeHCvO": { "fName": "Peter", "ID": "U1EL9SSUQ", "nama pengguna": "peter01" }, "-KKUmYgLYREWCnWeHCvO": { "fName": "John", "ID": "U1EL5623", "nama pengguna": "john.doe" } } }</pre> <p>Saya ingin menyemak sama ada ID dengan nilai <kod>U1EL5623</kod> </p>
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 查询返回的 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);
    }
  });

Hasil pemerhatian:

Jika anda berada dalam senario yang berbeza dan anda mempunyai laluan rujukan tepat di mana objek itu mungkin, tidak perlu menambah orderByChildequalTo. 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