gpt4 book ai didi

swift - 使用 swift 代码从 firebase 数据库获取所有 uid

转载 作者:行者123 更新时间:2023-11-30 11:05:18 24 4
gpt4 key购买 nike

我有这个数据库(请参阅上面的图像链接)和带有路径的代码,该代码使用以下方式到达目的地:

databaseReference.child("users").child(currentUser!.uid).child("todo-list")

Firebase database structure

在第一个节点“users”下,下一层是userID的keyvalue,后面还有更多的子层“todo-list”等。

我想从所有可用的 uid 中获取数据。我该如何进行查询?

这是代码:

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
databaseReference = Database.database().reference()
currentUser = Auth.auth().currentUser
let todoListRef = databaseReference.child("users").child(currentUser!.uid).child("todo-list")
todoListRef.observe(DataEventType.value, with: { (DataSnapshot) in
self.itemsToLoad.removeAll()
let enumerator = DataSnapshot.children

while let todoItem = enumerator.nextObject() as? DataSnapshot
{
let item = todoItem.value as AnyObject

self.itemsToLoad.append(item)
}
self.itemsToLoad = self.itemsToLoad.reversed()
self.tableView.reloadData()
})
}

最佳答案

它与您已有的代码非常相似。您不是观察 /users/$uid,而是观察整个 /users 节点。然后在闭包中添加一个额外的循环,以迭代所有用户。

所以:

let usersRef = databaseReference.child("users")
usersRef.observe(DataEventType.value, with: { (usersSnapshot) in
let userEnumerator = usersSnapshot.children
while let user = userEnumerator.nextObject() as? DataSnapshot {
let uid = user.key
let todoEnumerator = user.childSnapshot(forPath: "todo-list").children

while let todoItem = todoEnumerator.nextObject() as? DataSnapshot {
let item = todoItem.value as AnyObject

self.itemsToLoad.append(item)
}
}
})

添加的 while 循环遍历用户,而内部的 while 循环遍历每个用户的待办事项。我删除了与表格 View 相关的代码,因为您想要执行的操作并不依赖于 Firebase。

关于swift - 使用 swift 代码从 firebase 数据库获取所有 uid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52798732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com