我一直在考虑这个问题,但我想我会发布一个问题,以使它具有更多的思考能力,或者看看这是否有可能。我正在抓取多个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。
答案 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"
如果我误解了这个问题,请告诉我,我会进行更新。