【发布时间】:2016-06-20 01:42:55
【问题描述】:
假设我们在 Firebase 中有这些数据。
usersMail
- "example1@mail.com": "1"
- "example2@mail.com": "2"
- "example3@mail.com": "3"
user1 是否可以查询他自己的电子邮件列表以查找正在使用该应用程序的朋友,而无需将 usersMail 设置为可被所有用户迭代?
如果这在 Firebase 中不可行,我是否必须设置一个具有管理员帐户的服务器才能进行查询?后端的东西还是很新,所以我很感激帮助!
【问题讨论】:
-
Firebase 结构可能不是最好的,但您的要求肯定可以完成。应该是 usersMail/-Yjo0ksip094koa/example1@mail.com: true, /-Yp9490josokd9/example2@mail.com: true。这使查询变得容易,或者只是观察所有电子邮件的 usersMail 节点(-Yjo0... 是使用 childByAutoId 创建的,以生成“随机”键名)。为了保护节点,您将设置一个规则,以便只有该用户可以读取他自己的节点。话虽如此,您可能需要考虑保留对用户的引用而不是实际的电子邮件。这样,可以轻松更新电子邮件。
-
听起来像是杰伊的回答。 ;-)
-
@Jay 谢谢,但是我不希望用户只能读取他自己的节点。例如。 user1 的手机上有 user2 的电子邮件,因此应用程序应该能够询问 usersMail 中是否存在“example2@mail.com”并获取 user2 的 UID。我希望它得到保护,这样用户 3 就无法在用户邮件中抓取所有电子邮件,如果他愿意的话。这可能吗?
-
@FrankvanPuffelen 这有点像一个答案,但我不确定我是否理解后续评论。你在问吗?一个用户已经有另一个用户的电子邮件,您想使用该电子邮件从 /users 节点查找该用户 uid?是的,您可以通过查询来做到这一点,但用户最初是如何收到其他用户的电子邮件的?什么是防止任何“有其他用户电子邮件”的用户查询它。这可能是最初获取电子邮件的方式的设计问题。
-
@Jay 是的,这正是我要问的。在场景中,user1 和 user2 可能是朋友,我希望他们能够找到彼此。没有什么可以阻止“有其他用户电子邮件”的用户查询。感谢您抽出宝贵时间:D
标签: firebase firebase-realtime-database firebase-security