在 Web 应用程序中使用 Firebase Firestore,我可以排除返回某些字段吗?

我在文档中找不到任何内容,但说我执行了一个查询,例如

const snapshot = await jobsRef.where('status', '==', STATUS_ACTIVE).get();

可以排除某些字段不返回这个“工作”?“工作”文档中的某些字段应保持私有。


慕码人2483693
浏览 95回答 2
2回答

侃侃尔雅

对于 Web 和移动客户端,无法从查询中排除某些字段。当您查询文档时,它将始终提供所有匹配文档的所有字段。安全规则不会帮助你。对于有公共字段和私有字段要分开的情况,您应该制作两个不同的集合并使用不同的安全规则保护它们。您可以选择两个顶级集合:/jobs-public/{id} /jobs-private/{id}或者您可以使用子集合:/jobs/{id}/public/{id} /jobs/{id}/private/{id}在任何一种情况下,您都必须确保用户只能阅读您的要求允许他们阅读的文档。

宝慕林4294392

无法检索某些字段,正如 Doug 上面提到的,您可以将不同集合或子集合中的字段分开。如果您不想重新设计数据库结构,您也可以使用 Firebase Cloud Functions,您可以在其中获取所需的文档、过滤接收到的数据并将所需的字段返回给用户。因此,用户也将无法看到完整的文档。尽管这显然会增加您的成本,因为您将使用 Cloud Functions。尽管过滤和验证谁在检索数据确实很有效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript