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();
}
});
})
С помощью этого последнего подхода клиент никогда непосредственно общается с вашим сервером, который удаляет все виды потенциальных проблем, которые вы должны беспокоиться. По этой причине я иногда называю их «ботами», а не серверами.
Отличный вопрос! Как вы, наверное, уже видели, Firebase не имеет прямого эквивалента для Cloud Code (пока). Я описал/связал несколько подходов ниже. Просто прокомментируйте, если что-то непонятно! –
[Вы еще не видели это видео Роб Додсона, объясняющего, как использовать Firebase с Polymer] (https://youtu.be/1f_Tj_JnStA?t=12m52s)? Я думаю, что это очень мощная комбинация. https://youtu.be/1f_Tj_JnStA?t=12m52s – Mowzer