Firebase firestore saya dibangun seperti ini:

duell -> documentID -> key:"l23dsk2ls",(player:uid), ...

Tangkapan layar struktur firestore

Saya memeriksa apakah kuncinya ada seperti ini:

   const db = firebase.firestore();
    var duettsRef = db.collection("duetts");
    export const keyExists = (setKey)=>{
    duettsRef
      .doc('key')
      .get().then(
        doc => {
          if (doc.exists) {
            this.db.collection('duett').doc('key').collection(setkey).get().
               then(sub => {
                  sub.docs.length > 0
          });
        }
      })
    }

Jika ada, kuncinya unik. Sekarang, alih-alih kode di atas di mana saya hanya memeriksa apakah kuncinya ada, saya ingin tahu, apakah kuncinya ada -> jika ya -> jika ada bidang player:"..." dalam koleksi, tempat saya menemukan kunci. Bagaimana saya bisa melakukan ini?

0
Grrrrrag 8 Mei 2021, 17:07

3 jawaban

Jawaban Terbaik

Anda dapat mencoba menjalankan kode berikut:

const db = admin.firestore();
var duettsRef = db.collection("duetts");
export const keyExists = (setKey) => {
    duettsRef.where("player", "==", playerKey).get().then(querySnapshot => {
        if (!querySnapshot.empty) {
            this.db.collection('duett')
              .doc(playerKey).collection(setkey).get().then(subSnapshot => {
                  console.log(subSnapshot.size);
              });
            }
        })
    }

Jika Anda dapat membagikan tangkapan layar struktur Firestore Anda, maka saya akan dapat memperbarui kode sesuai kasus penggunaan Anda. Tetapi kode di atas memeriksa apakah ada dokumen yang berisi playerKey, itu memeriksa ket yang sama dalam koleksi duet.

0
Dharmaraj 8 Mei 2021, 14:20

Anda sebenarnya dapat menggunakan ketidaksetaraan untuk tes seperti ini - periksa apakah bidangnya LEBIH BESAR DARI "\0000" (unicode null) - dokumen di mana bidang TIDAK ada TIDAK akan disertakan; semua dokumen yang memiliki nilai APAPUN (selain secara harfiah satu karakter nol) akan dikembalikan. Bisa memiliki BANYAK hasil, jadi Anda mungkin juga ingin menggunakan .limit() jika Anda hanya ingin mengetahui JIKA dokumen ada, tidak benar-benar mengeluarkan biaya untuk membaca semuanya .

0
LeadDreamer 8 Mei 2021, 20:22

Untuk memeriksa apakah ada nilai, Anda dapat menggunakan kueri , dan akan terlihat seperti ini:

duettsRef
  .where('player', '==', key)
  .get().then(
    snapshot => {
      if (!snapshot.empty) {
0
Frank van Puffelen 8 Mei 2021, 14:14