多个选择firebase

时间:2016-05-21 11:54:51

标签: firebase

我正在实施简单的Facebook游戏并选择了firebase作为BAAS,它看起来非常酷且易于使用。 但我一直坚持回答问题的答案并不容易找到。 所以就是这样。

我需要向朋友展示彼此的进步。 就像userA在facebook中有friend1和friend2的朋友一样,userA可以看到friend1和friend2的进展。

结构类似于。

users/userA
   {
       progress : 'some progress'
   }

users/friend1
   {
       progress : 'some other progress'
   }

users/friend2 
   {
       progress : 'progress again'
   }

所以我收到了#friend;'和朋友2'来自facebook,现在我需要从firebase获得他们的进展。

通过单一查询获取数据是否可行? 我应该

`curl 'https://project-xxx.firebaseio.com/users.json?equalTo="FRIEND_NAME"'` 

对于每个朋友?

1 个答案:

答案 0 :(得分:1)

欢迎使用Firebase。

Firebase本质上是异步的。您的问题表明您可能希望使用轮询技术来吸引用户的朋友。

您可能需要考虑让Firebase为您做繁重的工作;当用户的朋友的进度发生变化时,让Firebase告诉您相关信息,而不是轮询该更改。

通过在每个朋友节点(或所有节点和代码中的过滤器)上设置观察者来完成。当观察到的用户的进度发生变化时,将通知您的应用。

基于你的firebase结构,这是Swift中的一个例子:

let thisUserRef = self.usersRef.childByAppendingPath("friend1")
//you could add observers for friend2, friend 3 etc

thisUserRef.observeEventType(.ChildChanged, withBlock: { snapshot in
   let progress = snapshot.value["progress"] as! String
   print(progress)
}

一旦此代码运行,任何时候friend1的进度都会发生变化,friend1节点将被发送到您的应用程序,您可以相应地更新UI。

您可以从此向上推断一个级别并观察/ users节点。这样,所有用户的进度更改都会传递到您的应用,您可以过滤掉不在用户A的朋友列表中的那些。

它有更多数据,但可能适合您的使用案例。

Firebase入门指南过去包含了如何执行此操作的很好示例,但我不再看到这些示例可用。也许Firebaser可以提供当前代码示例的链接。