Как считать детей по всем UID, а не только по CurrentUser? - PullRequest
0 голосов
/ 16 мая 2019

Я работаю с базами данных Xcode 10, Swift 5 и Firebase в реальном времени.Я хочу подсчитать общее количество проектов, добавленных в базу данных всеми пользователями.

override func viewDidLoad() {
    super.viewDidLoad()
    //get reference to firebase database
    refRepairs = Database.database().reference().child("completed");


    //observing the data changes
    refRepairs!.child(UserID!).observe(DataEventType.value, with: { (snapshot) in

        //if the reference have some values
        let num = snapshot.childrenCount
        //print(num)

        self.numberOfCompletedItems.text = String (num)
    })

    refRepairs!.child(UserID ?? "No User ID").observe(.childAdded, with: { (snapshot) in
        //// Attempt to fetch the number of projects
        let num = snapshot.childrenCount
        print("SnapShot Child Number: \(num)")

    })
}

Когда я запускаю код, он печатает 0. Мне нужно выяснить, как считать детей по всем идентификаторам пользователей.Благодарю.

Firebase Database Picture

1 Ответ

0 голосов
/ 16 мая 2019

Возможно, вам нужно использовать .childAdded для циклического прохождения всех узлов в этой коллекции.

Обновление

1 - этот код будет извлекать пользователей из вашего каталога root:

func fetchRoot() {
    refRepairs!.child(UserID ?? "No User ID").observe(.childAdded, with: { (snapshot) in
            // Get Every user 
            let userID = snapshot.key
            // Pass the users key
            self.fetchUsers(userID: userID)

        })
    }
}

2- Этот код будет считать каждый узел внутри users:

func fetchUsers(userID: String) {
    refRepairs!.child(userID).observeSingleEvent(of: .value, with: { (snapshot) in
            //// Attempt to fetch the number of projects
            let num = snapshot.childrenCount
            print("SnapShot Child Number: \(num) -- For User: \(userID)")
        })
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...