Сервер управления Firebase для поддержания счетчиков и агрегатов

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

Поэтому я подумал об этом шаблоне:

Я буду хранить сервер, который будет прослушивать все элементы, введенные в базу данных, и этот сервер будет обновлять все счетчики и агрегаты. Сервер будет содержать UID специального администратора, который сможет обновлять только счетчики.

Таким образом, пользователям не нужно будет загружать целые узлы, чтобы получить счет, плюс мне не придется решать проблемы, возникающие при обслуживании клиентов клиентами.

Имеет ли смысл этот шаблон? Я что-то упускаю?

Firebase недавно выпустила функции облака. Как упоминалось в документации :

Облачные функции – это размещенная, приватная и масштабируемая среда Node.js, где вы можете запускать код JavaScript.

С облачными функциями вам не нужно создавать собственный сервер. Вы можете просто написать функции JavaScript и загрузить его в Firebase. Firebase будет отвечать за запуск функций всякий раз, когда происходит событие.

Например, допустим, вы хотите подсчитать количество понравившихся сообщений. У вас должна быть структура, подобная этой:

{ "Posts" : { "randomKey" : { "likes_count":5, "likes" : { "userX" : true, "userY" : true, "userZ" : true, ... } } } } 

И ваша функция JavaScript будет написана следующим образом:

 const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); // Keeps track of the length of the 'likes' child list in a separate attribute. exports.countlikes = functions.database.ref('/posts/$postid/likes').onWrite(event => { return event.data.ref.parent().child('likes_count').set(event.data.numChildren()); }); 

Этот код увеличивает переменную likes_count каждый раз, когда появляется новая запись на узле типа.

Этот образец доступен на GitHub .

  • Ограничение доступа для детей и полей с помощью правил безопасности
  • Есть ли способ использовать GeoFire с Firestore?
  • Как удалить данные из базы данных после «n» дней
  • Как преобразовать данные Firebase в объект Java ...?
  • Firebase Query Double Nested
  • Как защитить Firebase Cloud Function HTTP-конечную точку, чтобы разрешать только проверенные пользователями Firebase?
  • Облачные функции Firebase очень медленные
  • FirebaseListAdapter не подталкивает отдельные элементы для приложения для чата - Firebase-Ui 3.1
  • Как хранить и просматривать изображения на firebase?
  • Разрешение Firebase при чтении данных после аутентификации
  • Почему я не могу использовать метод overulateViewHolder override?
  • Давайте будем гением компьютера.