Получить все UID из базы данных Firebase, используя код Swift - PullRequest
0 голосов
/ 14 октября 2018

У меня есть эта база данных (см. Ссылку выше с изображением) и код с путем, который ведет к месту назначения, используя:

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

Firebase database structure

Подпервый узел «пользователи», следующий уровень - это ключевое значение для идентификатора пользователя, а позже появятся дополнительные подуровни «список задач» и т. д.

Я хотел бы получить данные из все идентификаторы доступно.Как я могу сделать запрос?

Вот код:

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()
    })
}

1 Ответ

0 голосов
/ 14 октября 2018

Это очень похоже на код, который у вас уже есть.Вместо наблюдения /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 циклы по задачам для каждого пользователя.Я удалил код, связанный с табличным представлением, поскольку то, что вы хотите там сделать, не зависит от Firebase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...