【发布时间】:2021-01-27 13:46:23
【问题描述】:
我想从 Firestore 获取文档,但只是包含文档的某些字段。
我为此找到了 2 个用例。其中之一是:
Firestore 中的用户
UsersCollection
UserDocument
email
uid
photoUrl
name
如果我想与用户集合中的所有用户聊天,我需要获取用户集合中的所有文档。但是这些文档包含一些对我们的聊天无用的重要信息,例如电子邮件。我不能只从 firebase 请求没有电子邮件字段的用户文档吗?黑客不能在内存中找到用户文档并获取他们的电子邮件吗?电子邮件对聊天没有用,我只需要姓名,uid 和 photoUrl,电子邮件对这个功能没有用,但我仍然可以使用整个文档。 我如何在没有电子邮件的情况下“排除”或获取文档?这更多的是关于安全性和用户隐私。
另一个用例是类似系统。假设我们在 firebase 中有一个类似这样的帖子:
PostsCollection
PostDocument
number of likes
arrayOfUsersThatLiked
photoUrl
点赞数由云函数递增,当修改arrayOfUsersThatLiked时,该函数将数组的长度添加到点赞数字段中。 (arrayOfUsersThatLiked 用于不让用户点赞超过 1 次,所以如果有人点赞该帖子,arrayOfUsersThatLiked 会跟踪谁,不会让他们再次点赞)
当我们从数据库中获取帖子文档时,我们实际上会得到包含很多 uid 的 usersThatLiked 数组以及我们需要的东西,我们只需要 photoUrl 和帖子上的点赞数,而不需要 usersThatLiked大批。 (存储这么大的字符串数组也很痛苦)。
所以主要问题仍然存在,我如何仅获取包含我想要的字段的文档?这是隐私/安全和性能问题。
【问题讨论】:
标签: arrays firebase google-cloud-firestore database-design firebase-security