Firebase ios:按ID获取用户列表

时间:2016-06-03 10:28:24

标签: ios swift firebase firebase-realtime-database

情况:我有一个用户数据库,用户可以将朋友和朋友链接到当前用户模型作为userID。因此,当我加载用户数据时,我还会收到他朋友的火力记录ID列表。

问题:有没有办法一次性收到所有这些用户的firebase快照? Haven没有找到任何合适的解决方案 - .child()直接链接到一个对象,queryOrderedByChild()和queryOrderedByValue()似乎没有提出这样的请求。

对任何建议都会感激不尽。

编辑:数据库结构:

{
    "Users": {
        "user_id_first" : {
            "user_info" : {
                "name": "name",
                "age": "age"
            },
            "friends": {}
        },

        "user_id_second" : {
            "user_info" : {
                "name": "name",
                "age": "age"
            },
            "friends": {}
        },

        "user_id_third" : {
            "user_info" : {
                "name": "name",
                "age": "age"
            },
            "friends": {
                "user_id_first" : true,
                "user_id_second" : true
            }
        }
    }
}   

有朋友ID列表,实际上是firebase用户的ID。我只需要在一个firebase快照中检索这些用户的信息(即使用一个引用),而不为每个朋友创建新的引用,如

myDBRef.child("Users").child("friend_id")

1 个答案:

答案 0 :(得分:0)

使用for循环访问所有friendsId: -

 let parentRef = FIRDatabase.database().reference().child("Users")
   parentRef.child(FIRAuth.auth()!.currentUser!.uid).child("friends").observeEventType(.Value, withBlock: {(snapshot) in

  if snapshot.exists(){

    if let friendsDictionary = snapshot.Value as! NSMutableDictionary{

              for each in friendsDictionary as! [String : AnyObject]{

                     let friendsId = each.0 as! String

                     parentRef.child(friendId).observeEventType(.Value, withBlock: {(friendDictionary)

                     if let friendsInfo = friendDictionary.Value as! NSMutableDictionary{
                          //retrieve the info
                }
             })
           }
       }
    }
 })