Как получить только часть базы данных Firebase RealTime, а не всю базу данных? - PullRequest
0 голосов
/ 26 апреля 2019

Я создаю страницу с React.js, где первые 3 сообщения загружаются с сервера и отображаются в html.Когда пользователь прокручивает страницу вниз, я хочу загрузить еще 3 сообщения.

Мое намерение - сохранить пропускную способность, загружая только то, что необходимо.Это означает, что я не должен загружать всю базу данных, а затем отображать только ее часть.

Я успешно выполнил то же самое упражнение, но получил данные с локального json-сервера.,Я использовал axios для выполнения запроса get.Axios предоставляет удобный аргумент transformResponse, где вы можете настроить запрос.Там я выполнил срез массива данных перед его извлечением, и это именно то, что мне было нужно.

Теперь я хочу сделать то же самое, но вместо этого загружая данные из Firebase.

До сих пор мне удалось получить данные из моей базы данных Firebase и отобразить записи.Я сделал это так:

database.on('value', snapshot => {
  this.setState({
    posts: snapshot.val()
  });
});

Проблема в том, что таким образом я получаю всю базу данных.Я не хочу этогоЯ хочу получить только 3 сообщения.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Могу ли я узнать, как вы структурируете свою базу данных?

Если вы идентифицируете эти посты по Id, например, вот так

root -- posts --- post 1
              --- post 2
               .
              --- post n

Поэтому вы можете перебирать много постов, которые вам нравятся, вот так

firebase.database().ref('root/posts/' + postId).on('value', snapshot => {
  this.setState({
    posts: snapshot.val()
  });
});

Вы также можете группировать сообщения для однократного вызова API вместо цикла:

root -- posts --- postGroup1 --- post 1
                             --- post 2
                             --- post n
                     ...
              --- postGroupN --- post 1
                             --- post 2
                             --- post n

Более подробную информацию вы можете найти здесь, в Документах базы данных Firebase в реальном времени

0 голосов
/ 26 апреля 2019

Firebase извлекает только данные из местоположения, к которому вы подключаете слушателя.

Итак, если у вас есть узел с именем posts, вы можете получить только этот узел с помощью:

database.child('posts').on('value', snapshot => {
  this.setState({
    posts: snapshot.val()
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...