В этом кратком руководстве рассказывается, как настроить Firestore Enterprise, добавить данные, а затем посмотреть их в консоли Firebase с помощью серверных клиентских библиотек для C#, Go, Java, Node.js, PHP, Python и Ruby.
Используйте эти клиентские библиотеки, чтобы настроить привилегированные серверные среды с полным доступом к базе данных.
Создайте базу данных Cloud Firestore
Если у вас ещё нет проекта Firebase, создайте его. Для этого в консоли Firebase нажмите Добавить проект и следуйте инструкциям на экране. Вы также можете добавить сервисы Firebase в существующий проект Google Cloud.
На панели слева выберите Databases & Storage (Базы данных и хранилище) > Firestore.
Нажмите Create database (Создать базу данных).
Выберите местоположение для базы данных.
Если вы не можете выбрать местоположение, значит местоположение для ресурсов Google Cloud по умолчанию уже задано. Некоторые ресурсы проекта (например, экземпляр Cloud Firestore по умолчанию) имеют общую зависимость от местоположения, и их местоположение можно задать либо во время создания проекта, либо при настройке другого сервиса, который имеет эту зависимость от местоположения.
Выберите режим запуска для устройства "Cloud Firestore Security Rules":
- Режим тестирования
Подходит для начала работы с клиентскими библиотеками для мобильных устройств и веб-клиентов, но позволяет любому пользователю читать и перезаписывать ваши данные. После тестирования обязательно ознакомьтесь с разделом Защита данных.
Чтобы начать работу с SDK для веб-сайтов, платформ Apple или Android, выберите тестовый режим.
- Производственный режим
Запрещает все операции чтения и записи для мобильных и веб-клиентов. Ваши аутентифицированные серверы приложений (C#, Go, Java, Node.js, PHP, Python или Ruby) по-прежнему могут получить доступ к вашей базе данных.
Чтобы начать работу с серверной клиентской библиотекой C#, Go, Java, Node.js, PHP, Python или Ruby, выберите производственный режим.
Начальный набор Cloud Firestore Security Rules будет применен к базе данных Cloud Firestore по умолчанию. Если вы создадите несколько баз данных для проекта, то сможете развернуть Cloud Firestore Security Rules для каждой из них.
Нажмите Создать.
При включении Cloud Firestore также включается API в Cloud API Manager.
Как настроить среду разработки
Добавьте в приложение необходимые зависимости и клиентские библиотеки.
Java
- Добавьте Firebase Admin SDK в приложение:
-
С помощью Gradle:
implementation 'com.google.firebase:firebase-admin:9.11.0'
-
Использование Maven
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.11.0</version> </dependency>
-
С помощью Gradle:
- Чтобы инициализировать Cloud Firestore с правильными учетными данными в вашей среде, следуйте инструкциям ниже.
Python
- Добавьте Firebase Admin SDK в приложение Python:
pip install --upgrade firebase-admin
- Чтобы инициализировать Cloud Firestore с правильными учетными данными в вашей среде, следуйте инструкциям ниже.
Node.js
-
Добавьте Firebase Admin SDK в приложение:
npm install firebase-admin --save
- Чтобы инициализировать Cloud Firestore с правильными учетными данными в вашей среде, следуйте инструкциям ниже.
Проложить маршрут
- Добавьте Firebase Admin SDK в приложение Go:
go get firebase.google.com/go
- Чтобы инициализировать Cloud Firestore с правильными учетными данными в вашей среде, следуйте инструкциям ниже.
PHP
-
Серверные клиентские библиотеки Cloud Firestore (Java, Node.js, Python, Go, PHP, C# и Ruby) используют для аутентификации Google Application Default Credentials.
-
Чтобы выполнить аутентификацию из среды разработки, настройте переменную среды
GOOGLE_APPLICATION_CREDENTIALSтак, чтобы она указывала на JSON-файл ключа сервисного аккаунта. Создать файл ключа можно на странице учетных данных API Console.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json" - В рабочей среде вам не нужно проходить аутентификацию, если вы запускаете приложение в App Engine или Compute Engine, используя тот же проект, что и для Cloud Firestore. В противном случае настройте сервисный аккаунт.
-
Чтобы выполнить аутентификацию из среды разработки, настройте переменную среды
- Установите и включите расширение gRPC для PHP, которое необходимо для использования клиентской библиотеки.
-
Добавьте библиотеку Cloud Firestore PHP в свое приложение:
composer require google/cloud-firestore
Ruby
-
Серверные клиентские библиотеки Cloud Firestore (Java, Node.js, Python, Go, PHP, C# и Ruby) используют для аутентификации Google Application Default Credentials.
-
Чтобы выполнить аутентификацию из среды разработки, настройте переменную среды
GOOGLE_APPLICATION_CREDENTIALSтак, чтобы она указывала на JSON-файл ключа сервисного аккаунта. Создать файл ключа можно на странице учетных данных API Console.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- В рабочей среде вам не нужно проходить аутентификацию, если вы запускаете приложение в App Engine или Compute Engine, используя тот же проект, что и для Cloud Firestore. В противном случае настройте сервисный аккаунт.
-
Чтобы выполнить аутентификацию из среды разработки, настройте переменную среды
-
Добавьте библиотеку Cloud Firestore Ruby в свое приложение в
Gemfile:gem "google-cloud-firestore"
-
Установите зависимости из файла
Gemfileс помощью следующей команды:bundle install
(Необязательно) Создание прототипов и тестирование с помощью Firebase Local Emulator Suite
Прежде чем говорить о том, как ваше приложение записывает и считывает данные из Cloud Firestore, давайте познакомимся с набором инструментов, которые можно использовать для создания прототипов и тестирования функций Cloud Firestore: Firebase Local Emulator Suite. Если вы пробуете разные модели данных, оптимизируете правила безопасности или ищете наиболее экономичный способ взаимодействия с серверной частью, возможность работать локально без развертывания живых сервисов может быть отличной идеей.
Эмулятор Cloud Firestore входит в состав Local Emulator Suite. Он позволяет приложению взаимодействовать с эмулируемым контентом и конфигурацией базы данных, а также с эмулируемыми ресурсами проекта (функциями, другими базами данных и правилами безопасности).
Чтобы начать работу с эмулятором Cloud Firestore, выполните следующие действия:
- Добавление строки кода в тестовую конфигурацию приложения для подключения к эмулятору.
- Выполните команду
firebase emulators:startв корневом каталоге локального проекта. - Вызовы из кода прототипа приложения с помощью SDK платформы Cloud Firestore.
Доступно подробное руководство по работе с Cloud Firestore и Cloud Functions. Также рекомендуем ознакомиться с вводной статьей о Local Emulator Suite.
Инициализация Cloud Firestore
Инициализируйте экземпляр Cloud Firestore:
Java
Способ инициализации SDK Cloud Firestore зависит от среды. Ниже приведены наиболее распространенные методы. Полную информацию можно найти в статье Инициализация Admin SDK.import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use the application default credentials GoogleCredentials credentials = GoogleCredentials.getApplicationDefault(); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .setProjectId(projectId) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
Чтобы использовать Firebase Admin SDK на собственном сервере, используйте сервисный аккаунт.
В консоли Google Cloud выберите IAM & admin (IAM и администрирование) > Service accounts (Сервисные аккаунты). Создайте новый закрытый ключ и сохраните файл JSON. Затем используйте этот файл для инициализации SDK:
import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use a service account InputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json"); GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
Python
Способ инициализации SDK Cloud Firestore зависит от среды. Ниже приведены наиболее распространенные методы. Полную информацию можно найти в статье Инициализация Admin SDK.import firebase_admin from firebase_admin import firestore # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore.client()
Для инициализации SDK также можно использовать существующие учетные данные приложения по умолчанию.
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore.client()
Чтобы использовать Firebase Admin SDK на собственном сервере, используйте сервисный аккаунт.
В консоли Google Cloud выберите IAM & admin (IAM и администрирование) > Service accounts (Сервисные аккаунты). Создайте новый закрытый ключ и сохраните файл JSON. Затем используйте этот файл для инициализации SDK:
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use a service account. cred = credentials.Certificate('path/to/serviceAccount.json') app = firebase_admin.initialize_app(cred) db = firestore.client()
Python
Способ инициализации SDK Cloud Firestore зависит от среды. Ниже приведены наиболее распространенные методы. Полную информацию можно найти в статье Инициализация Admin SDK.import firebase_admin from firebase_admin import firestore_async # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore_async.client()
Для инициализации SDK также можно использовать существующие учетные данные приложения по умолчанию.
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore_async # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore_async.client()
Чтобы использовать Firebase Admin SDK на собственном сервере, используйте сервисный аккаунт.
В консоли Google Cloud выберите IAM & admin (IAM и администрирование) > Service accounts (Сервисные аккаунты). Создайте новый закрытый ключ и сохраните файл JSON. Затем используйте этот файл для инициализации SDK:
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore_async # Use a service account. cred = credentials.Certificate('path/to/serviceAccount.json') app = firebase_admin.initialize_app(cred) db = firestore_async.client()
Node.js
Способ инициализации SDK Cloud Firestore зависит от среды. Ниже приведены наиболее распространенные методы. Полную информацию можно найти в статье Инициализация Admin SDK.-
Инициализация в Cloud Functions
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
-
Инициализация в Google Cloud
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp({ credential: applicationDefault() }); const db = getFirestore();
-
Инициализация на собственном сервере
Чтобы использовать Firebase Admin SDK на собственном сервере (или в любой другой среде Node.js), используйте сервисный аккаунт. В консоли Google Cloud выберите IAM & admin (IAM и администрирование) > Service accounts (Сервисные аккаунты). Сгенерируйте новый закрытый ключ и сохраните файл JSON. Затем используйте этот файл для инициализации SDK:
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
const serviceAccount = require('./path/to/serviceAccountKey.json'); initializeApp({ credential: cert(serviceAccount) }); const db = getFirestore();
Проложить маршрут
Способ инициализации SDK Cloud Firestore зависит от среды. Ниже приведены наиболее распространенные методы. Полную информацию можно найти в статье Инициализация Admin SDK.import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use the application default credentials ctx := context.Background() conf := &firebase.Config{ProjectID: projectID} app, err := firebase.NewApp(ctx, conf) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
Чтобы использовать Firebase Admin SDK на собственном сервере, используйте сервисный аккаунт.
В консоли Google Cloud выберите IAM & admin (IAM и администрирование) > Service accounts (Сервисные аккаунты). Создайте новый закрытый ключ и сохраните файл JSON. Затем используйте этот файл для инициализации SDK:
import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use a service account ctx := context.Background() sa := option.WithCredentialsFile("path/to/serviceAccount.json") app, err := firebase.NewApp(ctx, nil, sa) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
PHP
PHP
Подробнее о том, как установить и создать клиент Cloud Firestore, рассказывается в статье Клиентские библиотеки Cloud Firestore.
C#
C#
Подробнее о том, как установить и создать клиент Cloud Firestore, рассказывается в статье Клиентские библиотеки Cloud Firestore.
Ruby
Добавить данные
Cloud Firestore хранит данные в документах, которые хранятся в коллекциях. Cloud Firestore создает коллекции и документы неявно при первом добавлении данных в документ. Вам не нужно явно создавать коллекции или документы.
Создайте новую коллекцию и документ, используя следующий пример кода.
Java
Python
Python
Node.js
Проложить маршрут
PHP
PHP
Подробнее о том, как установить и создать клиент Cloud Firestore, рассказывается в статье Клиентские библиотеки Cloud Firestore.
C#
Ruby
Теперь добавьте ещё один документ в коллекцию users. Обратите внимание, что в этом документе есть пара "ключ-значение" (отчество), которой нет в первом документе. Документы в коллекции могут содержать разные наборы информации.
Java
Python
Python
Node.js
Проложить маршрут
PHP
PHP
Подробнее о том, как установить и создать клиент Cloud Firestore, рассказывается в статье Клиентские библиотеки Cloud Firestore.
C#
Ruby
Чтение данных
Используйте средство просмотра данных в консоли Firebase, чтобы быстро проверить, добавили ли вы данные в Cloud Firestore.
Вы также можете использовать метод get, чтобы получить всю коллекцию.
Java
Python
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Python
Node.js
Проложить маршрут
PHP
PHP
Подробнее о том, как установить и создать клиент Cloud Firestore, рассказывается в статье Клиентские библиотеки Cloud Firestore.
C#
Ruby
Дальнейшие действия
Углубите свои знания по следующим темам:
- Модель данных. Узнайте, как структурируются данные в Cloud Firestore, в том числе об иерархических данных и подколлекциях.
- Добавление данных. Узнайте, как создавать и обновлять данные в Cloud Firestore.
- Получение данных. Узнайте, как извлекать данные.
- Выполнение простых и составных запросов – узнайте, как выполнять простые и составные запросы.
- Сортировка и ограничение запросов. Узнайте, как сортировать и ограничивать данные, возвращаемые запросами.