Ios Firebase Swift语法

Ios Firebase Swift语法,ios,firebase,swift3,firebase-realtime-database,Ios,Firebase,Swift3,Firebase Realtime Database,有人能帮我把它从JavaScript转换成Swift 3语法吗 我正在尝试获取特定用户拥有的所有客户端。 我将客户端保存在它们自己的节点中,然后在每个用户中都有一个clientid列表 我相信这段代码会起作用,正如它来自的指南中描述的类似情况一样,数据以相同的方式组织,但它不是快速语法,尤其是.on和.once var usersREF = new Firebase("https://awesome.firebaseio-demo.com/users"); var clientsREF =

有人能帮我把它从JavaScript转换成Swift 3语法吗

我正在尝试获取特定用户拥有的所有客户端。 我将客户端保存在它们自己的节点中,然后在每个用户中都有一个clientid列表

我相信这段代码会起作用,正如它来自的指南中描述的类似情况一样,数据以相同的方式组织,但它不是快速语法,尤其是.on和.once

var usersREF =
  new Firebase("https://awesome.firebaseio-demo.com/users");
var clientsREF =
  new Firebase("https://awesome.firebaseio-demo.com/clients");
var currentUsersClients = userREF.child("userID").child("comments");
currentUsersClients.on("child_added", function(snap) {
  clientsREF.child(snap.key()).once("value", function() {
    // Render the clients on the link page.
  ));
});
以下是Firebase上的数据结构:

我想其他方法可能是获取当前用户的clientID,然后调用所有客户机。通过ClientID过滤它们

获取当前用户的clientID,然后遍历它们,使用ID对每个客户机进行特定调用

我只是不知道在for循环中对firebase进行多次这样的调用是否是一种不好的做法。甚至更糟糕的是,提取比所需多得多的数据,然后对其进行过滤


谢谢你的帮助

这将根据您的结构获取uid\u 0的客户端

    let userRef = ref.child("users/uid_0")
    userRef.observeSingleEvent(of: .value, with: { snapshot in

        let userDict = snapshot.value as! [String:AnyObject]
        let clientsDict = userDict["clients"] as! [String:AnyObject]

        for client in clientsDict {
            let clientId = client.key
            print(clientId)
        }
    })

使用此示例代码可以获得所需的结果

func getUsers(forUserID userID: String, completion: @escaping (User) -> Swift.Void, failure: @escaping () -> ()) {
        if Auth.auth().currentUser != nil {
            Database.database().reference().child("users").child(userID).observe(.childAdded, with: { (snapshot) in
                if snapshot.exists() {
                    let receivedMessage = snapshot.value as! [String: Any]

                    let name = receivedMessage["name"] as? String ?? ""
                    let id = receivedMessage["id"] as? Double ?? 0.0
                    let profileurl = receivedMessage["url"] as? String ?? ""

                    completion(User(name: name, id: id, url: url))
                } else {
                    failure()
                }
            })
        } else {
            failure()
        }
}

这实际上不是一个代码编写服务,所以最好尝试编写代码并让我们知道您在哪里运行。请复习。另外,在将来,请将您的firebase结构以文本形式发布,而不是图像-这样它就可以搜索,我们在回答时不必重新键入。在这种情况下,这是超级简单,所以我张贴了一个快速的答案。