В этом кратком руководстве рассказывается, как настроить Cloud Firestore, добавить данные, а затем использовать основные операции или операции конвейера, чтобы запросить данные, которые вы только что добавили в консоли Firebase, используя серверные клиентские библиотеки для Java, Node.js и Python.
Используйте эти клиентские библиотеки, чтобы настроить привилегированные серверные среды с полным доступом к вашей базе данных.
Создайте базу данных Cloud Firestore
Если у вас ещё нет проекта Firebase, создайте его. Для этого в консоли Firebase нажмите Добавить проект и следуйте инструкциям на экране. Вы также можете добавить сервисы Firebase в существующий проект Google Cloud.
На панели слева выберите Databases & Storage (Базы данных и хранилище) > Firestore.
Нажмите Create database (Создать базу данных).
В качестве режима базы данных выберите Enterprise.
В качестве режима работы выберите Firestore в стандартном режиме, который поддерживает операции Core и Pipeline.
Выберите местоположение для базы данных.
Выберите режим запуска для устройства "Cloud Firestore Security Rules":
- Режим тестирования
Подходит для начала работы с клиентскими библиотеками для мобильных устройств и веб-клиентов, но позволяет любому пользователю читать и перезаписывать ваши данные. После тестирования обязательно ознакомьтесь с разделом Защита данных.
Чтобы начать работу с SDK для веб-сайтов, платформ Apple или Android, выберите тестовый режим.
- Производственный режим
Запрещает все операции чтения и записи для мобильных и веб-клиентов. Ваши аутентифицированные серверы приложений (Node.js, Python, Java) по-прежнему могут получать доступ к базе данных.
Начальный набор Cloud Firestore Security Rules будет применен к базе данных Cloud Firestore по умолчанию. Если вы создадите несколько баз данных для проекта, то сможете развернуть Cloud Firestore Security Rules для каждой из них.
Нажмите Создать.
При включении Cloud Firestore также включается API в Cloud API Manager.
Как настроить среду разработки
Добавьте в приложение необходимые зависимости и клиентские библиотеки.
Node.js
-
Добавьте Firebase Admin SDK в приложение:
npm install firebase-admin --save
- Чтобы инициализировать Cloud Firestore с правильными учетными данными в вашей среде, следуйте инструкциям ниже.
Python
- Добавьте Firebase Admin SDK в приложение Python:
pip install --upgrade firebase-admin
- Чтобы инициализировать Cloud Firestore с правильными учетными данными в вашей среде, следуйте инструкциям ниже.
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 с правильными учетными данными в вашей среде, следуйте инструкциям ниже.
Инициализация Cloud Firestore
Инициализируйте экземпляр Cloud Firestore:
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();
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()
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();
Как добавить данные с помощью основных операций
Чтобы изучить основные операции и операции конвейера для запроса данных, добавьте данные в базу данных с помощью основных операций.
Cloud Firestore хранит данные в документах, которые хранятся в коллекциях. Cloud Firestore создает коллекции и документы неявно при первом добавлении данных в документ. Вам не нужно явно создавать коллекции или документы.
Создайте новую коллекцию и документ, используя следующий пример кода.
Node.js
Java
Python
Чтение данных с помощью основных операций
Используйте средство просмотра данных в консоли Firebase, чтобы быстро проверить, добавили ли вы данные в Cloud Firestore.
Вы также можете использовать метод get, чтобы получить всю коллекцию.
Node.js
Python
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Java
Чтение данных с помощью операций конвейера
Теперь вы можете сравнить работу с запросами в Pipeline и Core.
Node.js
const readDataPipeline = db.pipeline() .collection("users"); // Execute the pipeline and handle the result try { const querySnapshot = await readDataPipeline.execute(); querySnapshot.results.forEach((result) => { console.log(`${result.id} => ${result.data()}`); }); } catch (error) { console.error("Error getting documents: ", error); }
Python
pipeline = client.pipeline().collection("users") for result in pipeline.execute(): print(f"{result.id} => {result.data()}")
Java
Pipeline pipeline = firestore.pipeline().collection("users"); ApiFuture<Pipeline.Snapshot> future = pipeline.execute(); for (com.google.cloud.firestore.PipelineResult result : future.get().getResults()) { System.out.println(result.getId() + " => " + result.getData()); } // or, asynchronously pipeline.execute( new ApiStreamObserver<com.google.cloud.firestore.PipelineResult>() { @Override public void onNext(com.google.cloud.firestore.PipelineResult result) { System.out.println(result.getId() + " => " + result.getData()); } @Override public void onError(Throwable t) { System.err.println(t); } @Override public void onCompleted() { System.out.println("done"); } });
Дальнейшие действия
Углубите свои знания об основных операциях и операциях с конвейером, изучив следующие темы:
- Ознакомьтесь с различиями между операциями Core и Pipeline.
- Подробнее об основных операциях…
- Подробнее о запросах с операциями конвейера…