亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Firebase Cloud Firestore doc.data().includes

Firebase Cloud Firestore doc.data().includes

狐的傳說 2022-12-18 15:41:02
我正在嘗試使用一個數組,嘗試在我存儲在云 firestore 上的數組上運行doc.data().includes,doc.data().indexOf該數組是文檔中唯一存在的東西。數據是這樣排列的    0: [email protected]    1: [email protected]    2: [email protected]為了獲取數據,我只是這樣做firebase.firestore().collection('mails').doc('emails').get().then((doc) => {            if (doc.exists) {                console.log(doc.data()); //prints the list of emails in form of array                doc.data().IndexOf(email); //error IndexOf doesn't exist                doc.data().includes(email); //error includesOf doesn't exist            }            else {                console.log('data doesn't exist');            }        });
查看完整描述

2 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

要訪問doc.data().IndexOfordoc.data().includes或任何其他與數組相關的函數,只需doc.data()像這樣轉換為數組:


var docArray = Object.values(doc.data());

docArray.includes(stringToSearchFor);

要么


Object.values(doc.data()).includes(stringToSearchFor);


這將允許您運行docArray.includes和docArray.IndexOf。轉換的原因是 firebase 返回整個文檔,它是對象的對象,您可以通過 console.log(doc.data()) 和原型字段看到這一點。發生這種情況是因為 firestore 將數組存儲為一個 json 對象,這意味著您看到的數組索引號實際上并不是索引號,它們只是對象鍵。


意義


0: [email protected]

1: [email protected]

2: [email protected]

0, 1, 2索引(或看起來)在哪里并且[email protected], [email protected], [email protected]是值,但在 firestore 中0, 1, 2實際上只是鍵,它們不是索引。因此,為了獲得我們剛剛運行的鍵(數字)或值(電子郵件)Object.keys(doc.data())// will return numbers,Object.values(doc.data())//will return emails您將獲得所需的數組,現在您可以對該數組運行操作。


查看完整回答
反對 回復 2022-12-18
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

我建議您將數據存儲在數組中,而不是像 Firestore 數據庫屏幕截圖所示的單獨字段。


您的 Firestore 文檔當前包含 6 個不同的字段,并且doc.data()您將此文檔中的所有 6 個字段作為一個 JavaScript 對象檢索:這就是 Array 方法無法工作的原因。如果將這些數據存儲在一個數組中(即一個數組類型的字段)就可以了。


您可以嘗試以下代碼:


  const docRef = firebase.firestore().collection('mails').doc('emails');


  docRef

    .set({

      mails: ['[email protected]', '[email protected]', '[email protected]'],

    })

    .then(() => {

      return docRef.get();

    })

    .then((doc) => {

      if (doc.exists) {

        const email = '[email protected]';

        console.log(doc.data().mails); 

        console.log(doc.data().mails.indexOf(email)); 

        console.log(doc.data().mails.includes(email)); 

      }

    });


查看完整回答
反對 回復 2022-12-18
  • 2 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號