代码之家  ›  专栏  ›  技术社区  ›  Lukas Bimba

Swift Firebase-获取多个uid,然后将这些uid添加到一个子系统

  •  0
  • Lukas Bimba  · 技术社区  · 6 年前

    我是如何得到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子级的数据示例

    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 回复  |  直到 6 年前
        1
  •  1
  •   Jay    6 年前

    我想我明白了,所以让我用一个例子来尝试一个答案。问题中没有列出如何获取要写入的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)
        }
    })
    

    因此,这段代码查询所有喜欢pizza的用户(这使我们能够访问他们的uid),然后(根据问题)将其附加到数据库中的子级,然后向其添加更多数据

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

    结果是

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

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