Предварительно сохранить данные из базы данных или получить просто необходимые? - PullRequest
0 голосов
/ 20 февраля 2019

Посмотрим, у нас есть приложение, в котором у пользователя есть проекты.Они могут даже создавать сотни проектов, и каждый проект может состоять из сотен частей, но может работать только с одним проектом.Я устанавливаю для него live-выборку с помощью firebase, которая выглядит следующим образом:

/*
projectsOfUser = {
  projectOne: {
    // hundreds of attributes
  },
  projectTwo: {
    //hundreds of attributes
  },
  //hundreds of projects (probably not, but it's possible)
}
*/
const listenProjectChanges = () => async dispatch => {
  projectsdb.on("value", snap => {
    const projects = snap.val();

    dispatch({
      type: "PROJECTS_SET",
      projects
    });
  });
};

В приведенном выше коде projectsdb может быть контейнером всех проектов или только текущим.Если мы разделим их, поэтому сначала позвоним и получим начальные данные текущего проекта, а затем получим, что у остального проекта, очевидно, будет лучший UX, но я просто хотел показать пример того, что я имею в виду.Вопрос становится интересным, когда мы говорим о том, сколько проектов у пользователя.Если у пользователя есть только два проекта, мы получаем преимущество в том, что если он изменит текущий проект, данные будут доступны немедленно.Я должен подумать о том, что все данные будут храниться в избыточном количестве, но в качестве хорошей точки зрения данные разделяются и сглаживаются, так что если проект обновляется, что не используется текущим пользователем (что возможно, потому что пользователи разделяютпроекты, так что другой пользователь может редактировать другой проект, но также текущий проект), это не вызовет повторного рендеринга.

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

1 Ответ

0 голосов
/ 20 февраля 2019

Я бы сделал начальный проход, чтобы получить «метаданные», чтобы вы могли делать такие вещи, как создание списка проектов, а что нет.

Если пользовательский опыт должен иметь доступ в реальном времени ко всемВ своих проектах вы можете использовать сервисного работника, который работает в фоновом режиме и приобретает необходимые биты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...