Swift Firebase-获取多个uid,然后将这些uid添加到孩子中

时间:2018-12-14 18:11:29

标签: ios swift firebase firebase-realtime-database

我一直在考虑这个问题,但我想我会发布一个问题,以使它具有更多的思考能力,或者看看这是否有可能。我正在抓取多个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。

1 个答案:

答案 0 :(得分:1)

我想我理解,所以让我尝试一个例子。问题中未概述如何获取要编写的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"

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