2016-02-12 4 views
25

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

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

Я думаю

  1. создать nodejs сервер, который использует экспресс.
  2. создавать middlewares для обработки логики.
  3. отправьте запрос на отправку с приложения, который запускает средние расходы
  4. используйте nodejs sdk firebase, чтобы обновить значения в соответствии с параметрами http-запроса.
  5. и реализовать на приложение firebase обработчиком, что слушать изменения

enter image description here

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

+1

Отличный вопрос! Как вы, наверное, уже видели, Firebase не имеет прямого эквивалента для Cloud Code (пока). Я описал/связал несколько подходов ниже. Просто прокомментируйте, если что-то непонятно! –

+0

[Вы еще не видели это видео Роб Додсона, объясняющего, как использовать Firebase с Polymer] (https://youtu.be/1f_Tj_JnStA?t=12m52s)? Я думаю, что это очень мощная комбинация. https://youtu.be/1f_Tj_JnStA?t=12m52s – Mowzer

ответ

39

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


Общие архитектуры Firebase приложений довольно хорошо определены в этом блоге Where does Firebase fit in your app?.

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

Я также настоятельно рекомендую рассмотреть вариант 2, где все взаимодействие между клиентами и сервером проходит через Firebase. Отличным примером такого типа архитектуры является Flashlight search integration. Клиенты пишут свои поисковые запросы в базе данных 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(); 
     } 
    }); 
}) 

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

+1

Это система очередей. Таким образом, клиент может независимо от того, что он хочет (хорошо: независимо от того, какие ваши [правила безопасности + проверки] (https://www.firebase.com/docs/security/guide/) позволяют) в качестве запроса, но ваш бот/сервер определяет, что делать с ним и какой ответ давать (если есть). Он может просто игнорировать запросы, которые он считает «недействительными», и оставить клиента-изгоев ожидающим ответа. Вы также можете создать обработку ошибок в протоколе запроса/ответа и отправить ответ типа «NOPE». Это похоже на API, за исключением того, что вы используете нашу базу данных так же, как и для ее раскрытия. –

+0

Так что в этом случае мне нужен сервер. Это не лучше использовать socket.io? Мне кажется, как удалить один слой и проще. – Alon

+1

Если вам нравится делать промежуточное ПО, есть множество альтернатив. Что «лучше» субъективно. Я просто хотел рассказать о том, как вы можете создавать API на Firebase, не выполняя промежуточного программного обеспечения. Это самая распространенная альтернатива Cloud Code с Firebase на данный момент. –

2

Вот что я хотел бы сделать:

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

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

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

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

Использование Firebase очередь избегает оба из них проблемы.

4

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

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

+0

Я узнал об этом и сейчас Он решил мою проблему что я столкнулся всего месяц назад, Спасибо команде firebase! –

+0

Я пришел к этому вопросу StackOverflow, потому что я не могу отфильтровать свой сайт электронной коммерции, используя единственную firebase. как я могу это достичь. если я использую какой-то REST API. Можете ли вы, plz, вести меня, что я должен делать? – George

+0

@George вы можете использовать новую облачную облачную базу. Но все же вы не можете выполнять полный текстовый поиск. Я думаю, вы можете захотеть использовать внешнюю поисковую систему, такую ​​как algolia, чтобы включить функцию расширенного поиска на вашем сайте. –