簡體   English   中英

如何從 Firestore 獲取數組值?

[英]How to get an array value from Firestore?

我將如下所示的數據結構存儲在 Cloud Firestore 中。 我已經在 Firestore 數據庫中保存了公司記錄,我想檢查我的域是否存在於公司的域數組中,如果是,那么我想要所有公司數據作為響應,但我不知道如何使用 Firestore 實現這一點。

在此處輸入圖片說明

我在這里標記了域。 讓我解釋一下,例如,如果我的域名是“abcinfo.in”,那么我想檢查它是否已經存在於任何 partner_company 域中,這里它與這個 partner_company 相關聯,所以它應該返回給我 partner_company 的所有數據. 就是這樣。

我已經嘗試過下面的代碼,但是當有單個值時它會有所幫助,但在這里我需要從數組中檢查

 var domaindata = db.collection('partner_company').where('company_domain', '==', _user.domain);
  domaindata.get().then(function (querySnapshot) {
    querySnapshot.forEach(function (doc) {
      console.log(doc.id, ' => ', doc.data());
    });
  });

所以請建議我任何更好的方法來獲得我想要的數據。 謝謝你。

Firebase 帶有一個用於數組過濾的簡潔功能: array-containsarray-contains-any 它們可以用作查詢運算符。

使用 array-contains 過濾數組以查找必須完全匹配的值。 以下查詢將解析您的測試文檔:

db.collection('partner_company').where('company_domain', 'array-contains', ['abcinfo.in', 'newtest.com'];

array-contains-any 在另一側過濾至少一個匹配值。

db.collection('partner_company').where('company_domain', 'array-contains-any', ['definfo.in', 'newtest.com'];

此處閱讀有關 firebase 中數組成員的更多信息

您可以執行以下操作:

var domaindata = db.collection('partner_company').where('company_domain', 'array-contains', _user.domain);

這將檢查數組company_domain包含傳遞的域。

檢查以下內容:

https://firebase.google.com/docs/firestore/query-data/queries#array_membership

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM