Как можно получить подробную информацию обо всех пользователях, кроме текущего, из базы данных в реальном времени на Firebase?

Я пытался создать несколько запросов к своей базе данных, но безуспешно. Это первый раз, когда вы сталкиваетесь с запросами в Firebase и находите их немного запутанными.

Моя структура базы данных выглядит так:

-> users

    ->profile
        ->uid1
            ->email : "some@email.com"
            ->name : "some_name"
            ->favourite
               ->id1
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id1"
               ->id2
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id2"
        ->uid2
            ->email : "some@email.com"
            ->name : "some_name"
            ->favourite
               ->id1
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id1"
               ->id2
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id2"
        ->uid3
            ->email : "some@email.com"
            ->name : "some_name"
            ->favourite
               ->id1
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id1"
               ->id2
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id2"

Вот что я пробовал:

 Database.database().reference().child("users/profile")
      .queryOrdered(byChild:  "username")
      .queryStarting(atValue: searchBar.text!)
      .queryEnding(atValue: searchBar.text! + "\u{f8ff}")
      .observeSingleEvent(of: .value, with: { (snapshot) in

Предположим, что пользователь, в который я вошел, имеет идентификатор пользователя «uid1», как я могу получить сведения обо всех других пользователях, кроме тех, которые принадлежат моему текущему пользователю?

-2
Andrei Enache 9 Мар 2019 в 22:55

1 ответ

Лучший ответ

как я могу получить подробную информацию обо всех других пользователях, кроме моего текущего пользователя?

Не существует специального API для получения «всех дочерних узлов, кроме этого». Это означает, что у вас есть несколько вариантов:

  1. Получить все дочерние узлы и исключить клиентский узел собственного узла пользователя. Это, безусловно, наиболее распространенный подход, поскольку накладные расходы на один дополнительный узел, который вы читаете, становятся незначительными по мере роста общего числа (пользовательских) узлов.
  2. Получите два диапазона дочерних узлов: те, которые были перед текущим пользователем, и те, которые были после него. Это требует, чтобы вы знали идентификатор узла до и после вашего текущего пользователя. Если вы это сделаете, вы можете сделать ref.orderByKey().endAt(idOfUserBefore) и ref.orderByKey().start(idOfUserAfter).
  3. Получить все остальные дочерние узлы как отдельные вызовы. Для этого необходимо знать идентификатор каждого дочернего узла. Но если вы это знаете, это не так дорого, как вы думаете, поскольку Firebase направляет вызовы по конвейеру через одно соединение.
0
Frank van Puffelen 9 Мар 2019 в 20:09