【发布时间】:2021-09-27 12:25:31
【问题描述】:
关于如何获取快照以仅返回某些内容的任何建议 集合中的文档?
db.collection('locations-data').get().then(snapshot => {
setupLocations(snapshot.docs);
JS setupLocations 函数循环遍历并将数据添加到 UI 上的 ul/li。它可以工作,但它会加载每个文档,我只想要基于用户集合中列出的用户访问权限的特定文档。
在我的“位置数据”集合中,我有按位置命名的文档(例如 ca1001、ca1002 等)
还有一个user collection > userID > locations 数组来设置用户可以查看哪些位置。
如上所述,安装程序在前端工作得很好,但会加载所有文档,我只希望某些用户获得某些位置(文档)以显示在 UI 中。
我将 users 集合中的位置数组放入 var,并尝试在代码方面使用地图和其他东西,还通过安全规则等尝试了一些东西。只是运气不佳。
这是为用户加载显示的 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>';
}
};
【问题讨论】:
-
您是否尝试过使用“in”查询过滤器?
-
我做了短暂的,将再次通过该选项。我有大约 20-30 个用户和大约 20 个文档。每个位置都需要不同级别的访问权限。
标签: javascript security google-cloud-firestore firebase-security