Подтвердить что ты не робот

Firebase и бэкэнд-логика

Я пользователь parse.com, и теперь я ищу другую услугу. Как я могу записать логику конца в firebase?

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

Я думаю, что

  • создать nodejs-сервер, который использует express.
  • создайте middlewares для обработки логики.
  • отправить запрос на отправку из приложения, который запускает middlewares
  • используйте nodejs sdk firebase для обновления значений в соответствии с параметрами http-запроса.
  • И реализовать на обработчике firebase приложения, которые прослушивают изменения

введите описание изображения здесь

их что-то проще? В синтаксисе я использовал код облака, я хочу, чтобы логика не была на стороне клиента, а на стороне сервера.

4b9b3361

Ответ 1

Обновление (10 марта 2017 г.). Хотя архитектура, описанная ниже, по-прежнему действительна и может использоваться для объединения Firebase с любой существующей инфраструктурой, Firebase только что выпустила Облачные функции для Firebase, позволяющие запускать функции JavaScript на серверах Google в ответ на события Firebase (например, изменения базы данных, вход пользователей и многое другое).


Общие архитектуры приложений Firebase довольно четко определены в этом сообщении в блоге Где Firebase вписывается в ваше приложение?.

Предлагаемая вами архитектура ближе всего к архитектуре 3, где ваш код на стороне клиента работает как напрямую с Firebase, так и с вашим сервером node.js.

Я также настоятельно рекомендую рассмотреть вариант 2, где все взаимодействие между клиентами и сервером выполняется через Firebase. Отличным примером такого типа архитектуры является интеграция поиска фонарика. Клиенты пишут свои поисковые запросы в базе данных Firebase. Сервер прослушивает такие запросы, выполняет запрос и записывает ответ обратно в базу данных. Клиент ожидает ответа.

Простым контуром для этого сервера может быть:

var ref = new Firebase('https://yours.firebaseio.com/searches');
ref.child('requests').on('child_added', function(requestSnapshot) {

    // TODO: execute your operation for the request

    var responseRef = ref.child('responses').child(requestSnapshot.key());
    responseRef.set(result, function(error) {
        if (!error) {
            // remove the request, since we've handled it
            requestSnapshot.ref().remove();
        }
    });
})

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

Ответ 2

2017

Сегодня Google анонсировала Облачные функции для Firebase https://firebase.google.com/features/functions/

Это отличное решение для архитектуры и обратной логики в Firebase.

Ответ 3

Вот что я буду делать:

  • Проверяйте все входы с помощью ". validate" rules. Для этого не нужен сервер.
  • Если у вас есть задачи для запуска, используйте Firebase Queue, бот для выполнения задач, и все готово.

Если вы не сделаете последнее, у вас могут быть две проблемы:

  • Если вы попытаетесь использовать приведенную вами диаграмму, будет немного сложно получить объект auth на сервере (но не невозможно). Продолжайте, если вам не нужно проверять пользователя, чтобы разрешить запрос.

  • Если вы используете только обычное приложение firebase для прослушивания изменений и ответа (например, редактирование объекта, например, пример кода Frank van Puffelen), у вас могут возникнуть проблемы с масштабируемостью. Когда ваш задний конец масштабируется до двух (или более) экземпляров, редактирование firebase вызовет задачу для всех из них. Каждый экземпляр заметит, что произошли изменения, затем выполните одну и ту же задачу один раз, добавьте/замените объект ответа один раз и попытайтесь удалить объект запроса один раз каждый.

Использование Firebase Queue позволяет избежать обеих этих проблем.