首页 > 解决方案 > Swift Firebase - 获取多个 uid,然后将这些 uid 添加到孩子

问题描述

我一直在考虑这个问题,但我想我会发布一个问题来获得更多的思考能力,或者看看这是否可能。我正在获取多个 uid,然后想要获取这些 uid 并将它们附加到我的数据库中的一个子项,然后向它们添加更多数据。由于它们是 uid 的,我无法单独访问它们,这将是一个简单的 firebase“更新值”调用,所以我如何获取这个 uid 列表,然后将它们添加到一个孩子,这样它们就是他们自己独立的孩子,然后添加值给他们?我只是在考虑如何将这个 firebase 调用设置为“将这些 uid 中的每一个添加为自己的孩子”。

我如何获得 uid

func getEmployees() {
   let employees =  Database.database().reference().child("Businesses").child(self.otherUser?["uid"] as! String).child("registered_employees").observe(.childAdded, with: { (snapshot) in
        if snapshot.exists() {
            let employess = snapshot.childSnapshot(forPath: "uid")
            print(employess)
        } else {
            print("didnt call right values")
        }
    })
}

我将添加到 uid child 的数据样本

let userMessageRef = Database.database().reference().child("user-messages").child(fromID).child(toID)
        let messageId = childRef.key
        userMessageRef.updateChildValues([messageId!:1])

上面的代码 ^^^^ 我希望 uid 位于“toID”中,然后将“messageId”添加到这些 uid 中

由于无法提取每个 uid 然后设置数据,我什至不知道如何在调用中单独执行每个 uid。

标签: iosswiftfirebasefirebase-realtime-database

解决方案


我想我明白了,所以让我用一个例子来回答。问题中没有概述我们如何获取我们想要编写的 uid,所以让我们试试这个:

假设我们有一个用户节点来存储我们的用户以及他们是否喜欢披萨

users
   uid_0 //the Firebase generated uid
      name: "Richie"
      likes_pizza: true
   uid_1
      name: "Marion"
      likes_pizza: false
   uid_2
      name: "Fonzi"
      likes_pizza: true
   uid_3
      name: "Howard"
      likes_pizza: false

我们想要做的是让喜欢披萨的用户,制作一个新节点并将每个 uid 存储为父级,然后存储他们名字的子级。

let usersRef = self.ref.child("users")
let pizzaQueryRef = usersRef.queryOrdered(byChild: "likes_pizza").queryEqual(toValue: true)
pizzaQueryRef.observeSingleEvent(of: .value, with: { snapshot in
    guard let allUsers = snapshot.children.allObjects as? [DataSnapshot] else {return}
    for user in allUsers {
        let key = user.key
        let name = user.childSnapshot(forPath: "name").value as! String
        let pizzaRef = self.ref.child("pizza_lovers")
        let aPizzaLoverRefUid = pizzaRef.child(key).child("their_name")
        aPizzaLoverRefUid.setValue(name)
    }
})

所以这段代码查询所有喜欢披萨的用户(这使我们能够访问他们的 uid),然后(根据问题)将它们附加到数据库中的一个子节点,然后向他们添加更多数据

然后想要获取这些uid并将它们附加到我的数据库中的一个孩子,然后向它们添加更多数据

结果是

pizza_lovers
   uid_0
      their_name: "Richie"
   uid_2
      their_name: "Fonzi"

如果我误解了这个问题,请告诉我,我会更新。


推荐阅读