簡體   English   中英

某些文檔的 firestore 快照

[英]firestore snapshot of certain documents

關於如何獲取快照以僅返回集合中的某些文檔的任何建議?

 db.collection('locations-data').get().then(snapshot => { setupLocations(snapshot.docs);

JS setupLocations 函數循環遍歷並將數據添加到 UI 上的 ul/li。它可以工作,但它加載每個文檔,我只想要一個基於用戶集合中列出的用戶訪問權限的特定文檔。

在我的“位置數據”集合中,我有按位置命名的文檔(例如 ca1001、ca1002 等)

還有一個user collection > userID > locations數組來設置用戶可以查看哪些位置。

如上所述,安裝程序在前端運行良好,但會加載所有文檔,我只希望某些用戶獲取某些位置(文檔)以顯示在 UI 中。

我將用戶集合中的位置數組放入一個 var 中,並嘗試在代碼端使用 map 和其他東西,還通過安全規則等嘗試了一些東西。只是運氣不佳。

這是 UI 端為用戶加載顯示的代碼。

 // show locations const setupLocations = (data) => { if (data.length) { let html = ''; data.forEach((doc) => { const location = doc.data(); const li = ` <li> <div class="collapsible-header grey lighten-4"> ${location.shortName}, Total Income: ${location.todayIncome} </div> <div class="collapsible-body white">${location.totalIncome}</div> </li> `; html += li; }); locationList.innerHTML = html; } else { locationList.innerHTML = '<h5 class="center-align">Login to view data</h5>'; } };

我最終使用了“array-contains”,並在我想要包含的每個文檔中添加了一個用戶字段。 .where('_users', 'array-contains', user.email)。 只需要創建一個簡單的管理員來以這種方式管理用戶,以避免必須手動將所有用戶添加到每個文檔。 謝謝大家的建議。

關於如何獲取快照以僅返回集合中的某些文檔的任何建議?

由於您的第一個選擇是根據用戶位置獲取所有文檔,因此您可以使用 @pepe 所說的,查詢過濾器中的where來獲取集合中的特定或某些文檔。 另一個選項是將user集合中的所有位置數據存儲到數組變量中,然后將其直接顯示到您的 UI 中。 有了它,您就不需要查詢location-data收集,因為您已經根據用戶的數據獲得了所有特定的位置數據。

暫無
暫無

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

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