Одной из важнейших функций бренда, выпущенных Firebase на прошлых мероприятиях Google Cloud Next’17 и Google I / O’17, были Облачные функции для Firebase.

Благодаря этой функции, наконец, мы можем создать «Backend», просто используя Firebase. Это подход к бессерверной архитектуре.

Облачные функции запускают код JavaScript на сервере, и это позволяет вам писать секретный код, например, ключи и секреты API, процессы оплаты, управлять облачным хранилищем и базой данных в качестве администратора.

Как я уже сказал, облачные функции пока следует писать на JavaScript с использованием среды Node.js (v6.9.x). В будущем они добавят новые языки.

В этом посте мы покажем, как установить инструменты и запустить проект, чтобы начать работу с Cloud Functions for Firebase. Пойдем!

Настройка среды

Прежде всего, вам необходимо установить Node.js, по крайней мере, версии 6.9.x или выше. Вы можете загрузить и установить для своей SO с веб-сайта проекта Node.js. Когда вы это сделаете, вы можете установить Firebase CLI, чтобы запустить новый проект и настроить функции. Вы можете установить его глобально с помощью npm:

$ npm install -g firebase-tools

Вы можете проверить, правильно ли он установлен, с помощью команды:

$ firebase version
> 3.9.1

Убедитесь, что у вас Firebase CLI версии 3.5.x или выше, в противном случае функция функций не работает.

Следующим шагом является создание нового проекта в Firebase Console Dashboard и в терминале командой:

$ firebase init
> Which Firebase CLI features do you want to setup for this folder? Press Space to select features, then Enter to confirm your choices. (Press <space
> to select)
❯◯ Database: Deploy Firebase Realtime Database Rules
 ◯ Functions: Configure and deploy Cloud Functions
 ◯ Hosting: Configure and deploy Firebase Hosting sites

Вам нужно выбрать параметры «Функции», чтобы использовать облачные функции в своем проекте. Он создает новую папку с именем «functions» внутри вашего проекта. Вот куда пойдет код JavaScript.

Эта папка содержит проект NPM с файлом package.json и index.js, в котором должны быть объявлены облачные функции.

В файле package.json определены две библиотеки, которые мы будем использовать: firebase-functions и firebase-admin.

  • firebase-functions позволяют нам запускать облачные функции на основе событий из базы данных реального времени, облачного хранилища, URL-адресов HTTPS, конверсий Google Analytics и т. д.
  • firebase-admin позволяет нам писать и читать базу данных реального времени в качестве роли администратора и сначала инициализировать приложение.

Чтобы установить эти зависимости, мы должны перейти в каталог функций вашего проекта и выполнить следующую команду:

$ npm install

Эта команда загружает все зависимости, указанные в файле package.json, в новую папку с именем node_modules.

Разработка вашей первой облачной функции

Когда вы это сделаете, вы можете потребовать библиотеки и использовать их из index.js как форма Node.js (CommonJS):

// functions/index.js
const admin = require('firebase-admin');
const functions = require('firebase-functions);

Следующая строка настраивает приложение Firebase на стороне сервера, получая конфигурацию firebase из functions.config (). Firebase

// functions/index.js
admin.initializeApp(functions.config().firebase);

Если вы не собираетесь использовать функции хранилища и / или базы данных из облака, вам не нужно использовать библиотеку администратора или библиотеку функций.

Чтобы создать и использовать облачные функции, которые мы будем разрабатывать, их необходимо экспортировать, чтобы среда Node.js, созданная Firebase в событии развертывания, могла их использовать.

В этом руководстве я собираюсь создать пример функции HTTPS, которая будет выполняться, когда мы вводим URL-адрес в браузере.

// functions/index.js
exports.helloWorld = functions.https.onRequest((req, res) => {
  // TODO
});

Синтаксис HTTPS Cloud Functions, скорее всего, ExpressJS. Событие Request запускает функцию обратного вызова с объектами request и response.

Мы вводим имя функции (helloWorld) и используем библиотеку functions с API https и событием onRequest. .

Внутри функций мы отправляем браузеру только ответ с текстом: «Hello, World!» для проверки рабочего процесса:

// functions/index.js
exports.helloWorld = functions.https.onRequest((req, res) => {
  res.status(200).send('Hello, World!');
});

Пришло время развернуть в облаке. Для этого нам потребуется в терминале использовать команду:

$ firebase deploy --only functions

или, если в вашем проекте используются только функции, вы можете использовать команду firebase deploy

В первый раз этот процесс может занять некоторое время.

После того, как функция развернута, вы можете вызвать ее, введя URL-адрес в браузере. URL будет таким:

https://us-central1-<project-id>.cloudfunctions.net/helloWorld

id-проекта - это идентификатор вашего проекта, а helloWorld - это имя функции, которое мы выбрали ранее. Если вы введете его в браузере, вы увидите следующее:

Hello, World!

Вот и все! Просто мы развертываем функцию сервера, не беспокоясь о конфигурации сервера, управлении, установке SO, среде и т. Д. С этой бессерверной архитектурой вы можете сосредоточиться на своем приложении и своем коде.

Вы можете найти похожую статью на испанском в моем блоге: carlosazaustre.es