Запрос базы данных реального времени Firebase Swift

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

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

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

-> users

    ->profile
        ->uid1
            ->email : "[email protected]"
            ->name : "some_name"
            ->favourite
               ->id1
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id1"
               ->id2
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id2"
        ->uid2
            ->email : "[email protected]"
            ->name : "some_name"
            ->favourite
               ->id1
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id1"
               ->id2
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id2"
        ->uid3
            ->email : "[email protected]"
            ->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», как я могу получить данные обо всех других пользователях, кроме тех, которые относятся к моему текущему пользователю?

Покажите, как вы пытались решить эту проблему. Покажи свой код.

Magnas 09.03.2019 20:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

how can I fetch the details of all the other users but the ones of my current user?

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

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

Другие вопросы по теме