从Firebase检索数据

时间:2013-11-19 23:10:33

标签: javascript firebase

我对Firebase世界很陌生,而且我在尝试做某些事情时遇到了麻烦。

我的Firebase与此类似:

- users
  + 1
  + 2
  + 3
  + 4
  ...
  + n

,其中数字是Facebook用户ID。

我想检查一些用户的哪些朋友在系统上注册(即在Firebase上)。

要做到这一点,我想发送一个JSON,其中包含我要检查的所有ID并接收已检查的ID。

这可能吗?或者我需要逐个检查?

谢谢!

1 个答案:

答案 0 :(得分:1)

Firebase目前无法说“只通过id给我一个列表子项的子集”,这相当于SQL语句SELECT * FROM users WHERE id IN (...)。但是,目前有两种方法可以解决这个问题:

处理此用例有两种主要方法:

  1. 如您所述,只要客户有兴趣检索此数据,客户端就可以逐个加载每个用户。通过调用var ref = new Firebase(...)ref.child(...)创建Firebase引用非常便宜,但您必须等待所有子项加载才能获得好友列表的完整图片。此外,这会导致您向一些不存在的子项添加侦听器,并且列表中只有null值。

  2. 或者,考虑对数据进行非规范化。 Anant @ Firebase写了一篇很棒的博客文章回顾这个主题,我建议将其作为入门的地方 - Denormalizing Your Data is Normal。对于这个特定用例,无论何时第一次加载列表,或“重新加载”用户的好友列表,您都可以创建自己的好友索引。

  3. 这两种方法之间的区别主要在于扇出与聚合的关系。具体来说,上面列出的第二种方法涉及写入许多位置,但只有一个读取消费客户端,而第一种方法涉及写入一个位置,但消费客户端从许多位置读取。