我在文档中找不到任何内容,但说我执行了一个查询,例如const snapshot = await jobsRef.where('status', '==', STATUS_ACTIVE).get();可以排除某些字段不返回这个“工作”?“工作”文档中的某些字段应保持私有。
2 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
对于 Web 和移动客户端,无法从查询中排除某些字段。当您查询文档时,它将始终提供所有匹配文档的所有字段。安全规则不会帮助你。
对于有公共字段和私有字段要分开的情况,您应该制作两个不同的集合并使用不同的安全规则保护它们。您可以选择两个顶级集合:
/jobs-public/{id} /jobs-private/{id}
或者您可以使用子集合:
/jobs/{id}/public/{id} /jobs/{id}/private/{id}
在任何一种情况下,您都必须确保用户只能阅读您的要求允许他们阅读的文档。
宝慕林4294392
TA贡献2021条经验 获得超8个赞
无法检索某些字段,正如 Doug 上面提到的,您可以将不同集合或子集合中的字段分开。
如果您不想重新设计数据库结构,您也可以使用 Firebase Cloud Functions,您可以在其中获取所需的文档、过滤接收到的数据并将所需的字段返回给用户。因此,用户也将无法看到完整的文档。
尽管这显然会增加您的成本,因为您将使用 Cloud Functions。尽管过滤和验证谁在检索数据确实很有效。
添加回答
举报
0/150
提交
取消