我正在实施简单的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"'`
对于每个朋友?
答案 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可以提供当前代码示例的链接。