Я создаю простое приложение в firebase, где пользователи могут дружить и публиковать посты друг друга.Тем не менее, вы можете видеть только голоса, поданные общими друзьями.
Т.е.: если Бобу нравится пост Джо.
Если я дружу с Джо и Бобом, я вижу, что Боб похож.
Если я дружу только с Джо, я не вижу Боба, как.
Как мне структурировать мои данные?Я планирую создать PostFeeds для каждого пользователя:
— PostFeed (collection)
— Uid (document)
— Posts (collection)
— Likes (collection)
Если я напишу новый пост, он будет добавлен во все фиды постов моих друзей.Если у меня 1000 друзей, это сообщение будет добавлено в 1000 каналов.
Я сохраняю лайки для каждого поста внутри каждого поста в PostFeed.Таким образом, мы можем получать лайки без дополнительного запроса.Так что, если Боб любит публикацию сообщений joes, он будет добавлен к каждому сообщению в лентах сообщений друзей Джо.
Т.е.: если Джо любит запись Боба, а у Боба есть 500 друзей.Пост Боба находится на 500 друзей PostFeeds.Лайки Джо должны быть добавлены ко всем 500 постам в каждом посте.
Но лайки видны только в том случае, если мы общие друзья.
Т.е.: если Бобу нравится пост Джо, он будет добавлен в фид пользователей только в том случае, если мы общие друзья.Так что просмотрите посты Джо, где Боб - общий друг, и добавьте к ним подобные сообщения.
Это масштабируемо?Хотя большая часть записи выполняется в функциях Firebase, операция записи кажется очень дорогой.Особенно, если пользователь любит, не любит, а затем снова любит.Или, если я добавлю нового друга, мне нужно будет добавить все отклики, которые этот новый друг сделал в постах общих друзей.
Есть ли лучший способ справиться с этим?