使用Firebase

时间:2016-10-11 21:07:56

标签: ios swift firebase firebase-realtime-database

我使用Facebook帐户登录并使用Facebook Graph检索了我的Facebook好友。

在我的users节点中,当我第一次登录时,我从Facebook登录的信息中创建了一个新的user

当您获得使用该应用的朋友列表时,您会看到Facebook ID的列表。为了从facebook ID中找到用户信息,我添加了一个节点facebookUser,我只是将facebook ID列表作为键存储,只有一个值,{{1}用户在Firebase上。

首先?我这样做是对的吗?

假设我是,我该如何从节点UID获取与我的facebookUser列表匹配的子项列表?

我还没有看到这样做的方法。我是否必须浏览我的Facebook ID列表并为每个孩子创建一个参考,然后获取值(Facebook ID)?它对我来说似乎不对。

编辑:

所以这是我在数据库中uid的JSON:

users

我将使用facebook帐户登录的每个用户链接到 "users" : { "0qNPzoQysdsdsdsdycuV1rxGvQkx2" : { "defaultLanguage" : "en", "email" : "sds_tmwrhwh_asd@tfbnw.net", "gamesPlayed" : 0, "isAnonymous" : false, "level" : 1, "name" : "sds asd", "profileImageURL" : "https://scontent.xx.fbcdn.net/v/t1.0-1/s100x100/1371212901_469201257_n.jpg?oh=625e9f1212117c74c862a46eb&oe=5811212697", "providerUserID" : "10112121250247", "score" : 0 } } 节点,如下所示:

facebookUsers

对于代码,这是我到目前为止所做的。我得到了来自Facebook图形请求的"facebookUsers" : { "10112121250247" : { "userID" : "0qNPzoQysdsdsdsdycuV1rxGvQkx2" } } 数组,循环遍历它们并获得facebook ID节点的相应UID

facebookUsers

对于检索到的每个private func getUIDs(fromIDs IDs: [String]) { for ID in IDs { let ref: FIRDatabaseReference = FIRDatabase.database().reference(withPath: "facebookUsers/\(ID)/userID") ref.observeSingleEvent(of: .value, with: { snapshot in if let uid = snapshot.value as? String { self.getUser(forFacebookID: ID, andUID: uid) } }) } } ,我得到UID节点,如下所示:

user

这有效,但我怀疑它是最好的解决方案。

其他:通过这样做,我得到了很多小的异步调用,以便跟踪所有调用的完成时间,我检查private func getUser(forFacebookID facebookID: String, andUID uid: String) { let ref: FIRDatabaseReference = FIRDatabase.database().reference(withPath: "users/\(uid)") ref.observeSingleEvent(of: .value, with: { snapshot in let user = User(snapshot: snapshot) self.facebookIdUidDic[facebookID] = user }) } 的大小并将其与我的{{1}的大小进行比较数组。但是,再一次,感觉不对。

0 个答案:

没有答案