Обновление статистики в нескольких дочерних узлах

Я создаю веб-приложение Soccer Fantasy и в настоящее время обеспокоен тем, что Firebase может быть неподходящей серверной службой для использования. В моем дереве базы данных реального времени есть 2 узла:

  1. Узел Players, который содержит базовый массив из 49 игроков. Каждый игрок представляет собой объект сценария Java, преобразованный в объект JSON в массиве JSON.

  2. Узел пользователей, который содержит сведения о каждом пользователе после создания с использованием метода fireabseAuth.

На локальном сервере есть пустой массив. Что я сделал, так это заставил каждого пользователя сделать выбор из 6 игроков, который заполнил пустой массив. После заполнения массив будет сохранен в базе данных реального времени под узлом пользователей.

Моя проблема

Моя проблема заключается в том, как обновить статистику каждого игрока в узле игроков, чтобы обновленная статистика в узле игроков отражалась под выбором каждого пользователя в узле пользователей. Возможно ли это вообще с firebase? Я надеюсь, что это потому, что я действительно хочу воспользоваться преимуществами синхронизации в реальном времени между базой данных и сервером на стороне клиента.


person Deji Caleb Awoniyi    schedule 15.07.2017    source источник


Ответы (1)


Все дело в архитектуре.

Просто сделайте так, чтобы когда пользователь выбирает игрока, ссылка сохранялась на его узле. Затем всякий раз, когда вы запрашиваете выбор пользователей, вы можете просто получить идентификаторы в пределах их выбора и захватить игрока из узла игроков по идентификаторам.

E.G.

Users {
    John: {
        Selection: [1,2,3]
    },
    Mark: {
        Selection: [1,2,4]
    } 
}

Players {
    1: {
        name: 'Messi',
        agility: 90
    },
    2: {
        name: 'Beckham',
        agility: 54
    },
    3: {
        name: 'Rooney',
        agility: 10
    },
    4: {
        name: 'Neymar',
        agility: 84
    }
}
person Win    schedule 15.07.2017
comment
благодаря. Означает ли это, что когда я изменю, скажем, ловкость Месси в узле «Игроки», она автоматически обновится в узле пользователей для выбранного Джона [1]? - person Deji Caleb Awoniyi; 16.07.2017
comment
Да :) Если вы собираете данные на клиенте, вам нужно убедиться, что при изменении узла ваш клиент получит изменения в реальном времени (или до тех пор, пока они не обновят страницу, где он будет получать данные из свежего). Вы можете сделать это, в основном прослушивая изменения на узлах игрока, которые выбрал пользователь. - person Win; 16.07.2017
comment
спасибо, я пытался написать код для прослушивания, и он не работал идеально, но я попробую еще раз. - person Deji Caleb Awoniyi; 16.07.2017
comment
поскольку я уже импортировал файл JSON для 49 игроков, есть ли способ, которым я могу добавить идентификаторы для каждого игрока вручную, или мне придется переделать список из 49 игроков, добавив идентификаторы? - person Deji Caleb Awoniyi; 16.07.2017
comment
@DejiCalebAwoniyi, вы можете изменить данные в консоли Firebase или создать пользовательский интерфейс, который изменяет данные из вашего приложения. - person Win; 16.07.2017
comment
огромное спасибо. Другая проблема, с которой я сталкиваюсь, - это сохранение массива со стороны клиента непосредственно в базу данных firebase. Это неправильный способ сделать это? возможно, мне следует сохранить выбор из массива игроков непосредственно в массив пользователей, вместо того, чтобы сохранять выбор в пустой массив на стороне клиента, а ЗАТЕМ сохранять массив в узле пользователей. - person Deji Caleb Awoniyi; 16.07.2017