为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕码人2483693 2023-06-09 15:57:02
我在文档中找不到任何内容,但说我执行了一个查询,例如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}

在任何一种情况下,您都必须确保用户只能阅读您的要求允许他们阅读的文档。


查看完整回答
反对 回复 2023-06-09
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

无法检索某些字段,正如 Doug 上面提到的,您可以将不同集合或子集合中的字段分开。

如果您不想重新设计数据库结构,您也可以使用 Firebase Cloud Functions,您可以在其中获取所需的文档、过滤接收到的数据并将所需的字段返回给用户。因此,用户也将无法看到完整的文档。

尽管这显然会增加您的成本,因为您将使用 Cloud Functions。尽管过滤和验证谁在检索数据确实很有效。


查看完整回答
反对 回复 2023-06-09
  • 2 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信