Нужно ли использовать функции Firebase для решения моей проблемы? - PullRequest
0 голосов
/ 21 мая 2019

У меня следующая структура БД:

Posts/uid/postID/mediaData...

Timeline/UID/uid:RandID/postRefrence

Я собирался пойти с такой структурой БД, потому что ради времени я хотел пойти с более простой структурой кода БД, которая все еще способна масштабироваться до большого количества пользователей (максимум 100) и быстро менять ее. к более масштабируемому методу: обновляйте только postsNode пользователей, а затем запускайте в фоновом режиме код firebaseFunctions, который дублирует данные, добавляя их всем подписчикам.

Однако я столкнулся с проблемой при этом. Что, если пользователь создает сообщение, тогда кто-то следует за этим пользователем, в настоящее время у меня нет кода для обработки такой ситуации, и, таким образом, новый подписчик не получит ни одного сообщения от пользователя, за которым он следит (добавлен к его временной шкале, которую я получаю) ,

Так что, похоже, мой единственный вариант - использовать функции огня. Так что каждый наблюдать за другим узлом в БД у меня есть: whoFollowesME. Оттуда я должен был бы (в бэкэнде) следить за обновлениями, и когда есть обновление, мне придется (скажем, кто-то следует за пользователем) перебирать последние x или, может быть, все сообщения и добавлять их ссылки на временную шкалу пользователей.

Вопрос:

Это хороший подход? Я никогда не использовал функции огня, поэтому не уверен, насколько это легко.

Должен ли я рассмотреть что-то еще?

1 Ответ

1 голос
/ 24 мая 2019

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

Что касается ваших комментариев по поводу написания множества документов от клиента: «лучше использовать» отличается от «можно сделать». Вы можете сделать разветвления из клиентских SDK или с нашими Admin SDK. Основным преимуществом последнего является то, что вы можете запускать их в выбранной вами среде, например, на вашей машине для разработки, на сервере, которым вы управляете, или в облачных функциях, так что вы будете лучше контролировать пропускную способность / ЦП / память / и т. Д. Но это не связано с тем, что они могут сделать на уровне SDK. Если вы знакомы со Swift больше, я бы начал там, чтобы вам было проще.

Если вы уже знаете JavaScript, попробуйте сначала выполнить разветвление в более быстрой среде, такой как локальный файл HTML / JS, StackBlitz / jsbin или локальный скрипт Node.js, который вы просто запускаете с разветвлением узла. JS. Как только он там заработает, вам нужно лишь немного сосредоточиться на облачных функциях. Именно так я часто пишу свои облачные функции, и это значительно ускоряет процесс разработки для них.

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