Это серия статей о трех способах использования Firebase, первая часть посвящена основам Firebase, вторая посвящена использованию Firebase в Интернете (AngularJs 1.x & Redux), а последний использует Firebase с приложением для Android, созданным с помощью ReactNative.

Часть 1

Прежде чем переходить к какой-либо веб-инфраструктуре, я обращаю внимание на две вещи: базу данных и развертывание. База данных, потому что это то, что определяет структуру и объемы действий для приложения, а развертывание, потому что клиентам нравится измерять прогресс, а отзывы могут быть получены как можно скорее.

База данных

У Firebase есть база данных в реальном времени, и это круто! однако мне пришлось думать о структуре данных по-другому, поскольку это похоже на JSON, некоторые ограничения были сделаны, например

Если вы создаете свои собственные ключи, они должны быть в кодировке UTF-8, иметь длину не более 768 байт и не могут содержать ., $, #, [, ], / или управляющие символы ASCII 0– 31 или 127.

Кроме того, вы должны быть осторожны с вложенными данными.

// list of categories 
{
  "airline" : true,
  "bank" : true,
  "hotel" : true,
  "network_provider" : true,
  "restaurant" : true
}

Выше приведен образец структуры данных для категорий. Обратите внимание, что мне пришлось использовать пары ключ/значение вместо квадратных скобок [] для массива элементов.

var categoriesRef = firebase.database().ref('categories/');

функция ref() возвращает ссылку на список категорий в базе данных.

categoriesRef.on('value', function(snapshot) {
  doSomethingWithData(snapshot.val());
});

со ссылкой вы можете следить за изменениями on() в базе данных, а

categoriesRef.push({ 'television_stations': true })

добавляет новый элемент в список.

Развертывание

Это очень важно, многие платформы могут быть трудно развернуть, прежде чем Meteor.Js запустил Galaxy Hosting Service, я развернул некоторые приложения на бесплатном хостинге, который он предоставил, я не мог привлечь трафик на сайт, потому что это был довольно медленным. Также, поскольку я хотел воспользоваться бесплатным хостингом Google App Engine, мне пришлось выучить Python, просто чтобы минимизировать затраты.

Развертывание довольно простое:

//Install firebase
npm install -g firebase-tools
//CD into the project directory and
firebase init

После инициализации проекта firebase генерирует .json для конфигурации.

//Remember to ignore the node_modules directory
{
  "hosting": {
    "public": "app",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  }
}

С другой стороны, мне пришлось ждать два дня, прежде чем я смог настроить личный домен и сертификацию HTTPS.