cari

Rumah  >  Soal Jawab  >  teks badan

Semak sama ada nilai wujud dalam pangkalan data firebase

<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粉354602955P粉354602955454 hari yang lalu434

membalas semua(2)saya akan balas

  • P粉364642019

    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
                  });
                }
            });

    balas
    0
  • P粉125450549

    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);
        }
      });

    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

    balas
    0
  • Batalbalas