我对Firebase世界很陌生,而且我在尝试做某些事情时遇到了麻烦。
我的Firebase与此类似:
- users
+ 1
+ 2
+ 3
+ 4
...
+ n
,其中数字是Facebook用户ID。
我想检查一些用户的哪些朋友在系统上注册(即在Firebase上)。
要做到这一点,我想发送一个JSON,其中包含我要检查的所有ID并接收已检查的ID。
这可能吗?或者我需要逐个检查?
谢谢!
答案 0 :(得分:1)
Firebase目前无法说“只通过id给我一个列表子项的子集”,这相当于SQL语句SELECT * FROM users WHERE id IN (...)
。但是,目前有两种方法可以解决这个问题:
处理此用例有两种主要方法:
如您所述,只要客户有兴趣检索此数据,客户端就可以逐个加载每个用户。通过调用var ref = new Firebase(...)
或ref.child(...)
创建Firebase引用非常便宜,但您必须等待所有子项加载才能获得好友列表的完整图片。此外,这会导致您向一些不存在的子项添加侦听器,并且列表中只有null
值。
或者,考虑对数据进行非规范化。 Anant @ Firebase写了一篇很棒的博客文章回顾这个主题,我建议将其作为入门的地方 - Denormalizing Your Data is Normal。对于这个特定用例,无论何时第一次加载列表,或“重新加载”用户的好友列表,您都可以创建自己的好友索引。
这两种方法之间的区别主要在于扇出与聚合的关系。具体来说,上面列出的第二种方法涉及写入许多位置,但只有一个读取消费客户端,而第一种方法涉及写入一个位置,但消费客户端从许多位置读取。