Query Firebase База данных в реальном времени Swift - PullRequest
0 голосов
/ 09 марта 2019

Как можно получить сведения обо всех пользователях, кроме текущего, из базы данных в реальном времени на 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", как я могу получить информацию обо всех других пользователях, кроме тех, которые принадлежат моему текущему пользователю?

1 Ответ

0 голосов
/ 09 марта 2019

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

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

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