Так что я уже некоторое время думаю об этом, и я думаю, что натолкнулся на хороший подход к своим требованиям, но я хочу знать, что вы, ребята, думаете об этом:
Предположим, выВы хотите создать социальную сеть с фидом на основе подписчиков, и вы используете Cloud Firestore для хранения сообщений и других пользовательских данных, а Angular или Ionic в качестве внешнего интерфейса.Как бы вы смоделировали данные так, чтобы каждый пользователь видел только сообщения от пользователей, за которыми он следит?
Мой подход такой: иметь коллекцию пользователей, в которой вы храните основную информацию о пользователях.Там у вас есть поле под названием «подписчики», а другое - «подписчики».Оба являются строковыми массивами и содержат идентификаторы пользователей, за которыми следует или следует определенный пользователь, соответственно.В этом пользовательском документе у вас также есть поле с именем feed, которое представляет собой массив, содержащий идентификаторы постов, которые пользователи должны видеть в своем фиде.
Затем у вас есть отдельная коллекция, называемая posts, и когдаПользователь добавляет сообщение, которое запускает облачную функцию, которая получает документ пользователя, который его опубликовал, и перебирает пользователей, следующих за этим конкретным пользователем.Затем вы получаете пользователя, соответствующего этому идентификатору пользователя, и вставляете идентификатор сообщения в поле «ленты новостей».
И, наконец, когда пользователь переходит на домашнюю страницу (или там, где должен появляться канал)Вы перебираете первые 30 (или другое число) элементов массива feed и получаете документы, а затем выполняете scan () (оператор rxjs), чтобы добавить их в форму массива posts, которую вы будете перебиратьпоказать сообщения.Тогда вы можете использовать бесконечный свиток, чтобы показать больше сообщений.
Что вы думаете об этом?Это хороший подход?