В этом кратком руководстве показано, как настроить Cloud Firestore , добавить данные, а затем просмотреть только что добавленные данные в консоли Firebase.
Создайте базу данных Cloud Firestore
Если вы еще этого не сделали, создайте проект Firebase: в консоли Firebase нажмите «Добавить проект» , а затем следуйте инструкциям на экране, чтобы создать проект Firebase или добавить сервисы Firebase в существующий проект Google Cloud .
Откройте свой проект в консоли Firebase . В левой панели разверните раздел «Сборка» , а затем выберите базу данных Firestore .
Нажмите «Создать базу данных» .
Выберите местоположение для вашей базы данных.
Если вы не можете выбрать местоположение, значит, «местоположение для ресурсов Google Cloud по умолчанию» в вашем проекте уже задано. Некоторые ресурсы вашего проекта (например, экземпляр Cloud Firestore по умолчанию) имеют общую зависимость от местоположения, и их местоположение можно задать либо при создании проекта, либо при настройке другой службы, которая также имеет эту зависимость от местоположения.
Выберите режим запуска Cloud Firestore Security Rules :
- Тестовый режим
Подходит для начала работы с библиотеками мобильного и веб-клиента, но позволяет любому читать и перезаписывать ваши данные. После тестирования обязательно ознакомьтесь с разделом «Защита данных» .
Для начала работы с веб-версией, платформами Apple или Android SDK выберите тестовый режим.
- Режим производства
Запрещает все операции чтения и записи с мобильных и веб-клиентов. Ваши аутентифицированные серверы приложений (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 .
Настройте среду разработки.
Добавьте необходимые зависимости и клиентские библиотеки в ваше приложение.
Web
- Следуйте инструкциям, чтобы добавить Firebase в ваше веб-приложение .
- SDK Cloud Firestore доступен в виде пакета npm.
Вам потребуется импортировать как Firebase, так и Cloud Firestore .npm install firebase@12.7.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
Web
- Следуйте инструкциям, чтобы добавить Firebase в ваше веб-приложение .
- Добавьте в свое приложение библиотеки Firebase и Cloud Firestore :
SDK Cloud Firestore также доступен в виде пакета npm.<script src="https://www.gstatic.com/firebasejs/12.7.0/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/12.7.0/firebase-firestore-compat.js"></script>
Вам потребуется вручную подключить Firebase и Cloud Firestore .npm install firebase@12.7.0 --save
import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
iOS+
Следуйте инструкциям, чтобы добавить Firebase в ваше приложение Apple .
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
- В Xcode, открыв проект приложения, перейдите в меню File > Swift Packages > Add Package Dependency .
- При появлении запроса добавьте репозиторий Firebase Apple Platforms SDK:
- Выберите библиотеку Firestore.
- После завершения Xcode автоматически начнет разрешение и загрузку ваших зависимостей в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk
Android
- Следуйте инструкциям, чтобы добавить Firebase в ваше Android-приложение .
- Используя Firebase Android BoM , укажите зависимость от библиотеки Cloud Firestore для Android в файле Gradle вашего модуля (уровня приложения) (обычно
app/build.gradle.ktsилиapp/build.gradle).dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.7.0")) // Declare the dependency for the Cloud Firestore library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-firestore") }
Использование Firebase Android BoM гарантирует , что ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.
(Альтернативный вариант) Объявление зависимостей библиотеки Firebase без использования BoM
Если вы решите не использовать Firebase BoM , вам необходимо указать версию каждой библиотеки Firebase в строке зависимости.
Обратите внимание, что если вы используете несколько библиотек Firebase в своем приложении, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.
dependencies { // Declare the dependency for the Cloud Firestore library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-firestore:26.0.2") }
Ищете модуль библиотеки, специально предназначенный для Kotlin? Начиная с релиза в октябре 2023 года , разработчики на Kotlin и Java могут использовать основной модуль библиотеки (подробнее см. в разделе часто задаваемых вопросов об этой инициативе ).
Dart
- Если вы еще этого не сделали, настройте и инициализируйте Firebase в своем Flutter-приложении.
- Для установки плагина выполните следующую команду из корневой папки вашего Flutter-проекта:
flutter pub add cloud_firestore
- После завершения пересоберите ваше Flutter-приложение:
flutter run
- Дополнительно: Улучшите время сборки для iOS и macOS, включив предварительно скомпилированный фреймворк.
В настоящее время SDK Firestore для iOS зависит от кода, компиляция которого в Xcode может занимать до 5 минут. Чтобы значительно сократить время сборки, вы можете использовать предварительно скомпилированную версию, добавив следующую строку в блок
target 'Runner' doв вашем Podfile:target 'Runner' do use_frameworks! use_modular_headers! pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => 'IOS_SDK_VERSION' flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) target 'RunnerTests' do inherit! :search_paths end endЗамените IOS_SDK_VERSION на версию Firebase iOS SDK, указанную в файле
firebase_sdk_version.rbкомпонентаfirebase_core. Если вы используете не последнюю версиюfirebase_core, найдите этот файл в локальном кэше пакетов Pub (обычно~/.pub-cache).Кроме того, убедитесь, что вы обновили CocoaPods до версии 1.9.1 или выше:
gem install cocoapods
Для получения более подробной информации см. соответствующую проблему на GitHub .
Java
- Добавьте Firebase Admin SDK в своё приложение:
- Использование Gradle:
implementation 'com.google.firebase:firebase-admin:9.7.0'
- Использование Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.7.0</version> </dependency>
- Использование Gradle:
- Следуйте приведенным ниже инструкциям, чтобы инициализировать Cloud Firestore с использованием соответствующих учетных данных в вашей среде.
Python
- Добавьте Firebase Admin SDK в ваше приложение на Python:
pip install --upgrade firebase-admin
- Следуйте приведенным ниже инструкциям, чтобы инициализировать Cloud Firestore с использованием соответствующих учетных данных в вашей среде.
C++
- Следуйте инструкциям, чтобы добавить Firebase в свой проект C++ .
- Интерфейс C++ для Android.
- Зависимости Gradle. Добавьте следующее в файл Gradle вашего модуля (уровня приложения) (обычно
app/build.gradle):android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { // earlier entries auth firestore }
- Бинарные зависимости. Аналогичным образом, рекомендуемый способ получения бинарных зависимостей — добавить следующее в файл
CMakeLists.txt:add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) set(firebase_libs firebase_auth firebase_firestore firebase_app) # Replace the target name below with the actual name of your target, # for example, "native-lib". target_link_libraries(${YOUR_TARGET_NAME_HERE} "${firebase_libs}")
- Для настройки интеграции с настольными приложениями см. раздел «Добавление Firebase в ваш проект C++» .
Единство
- Следуйте инструкциям, чтобы добавить Firebase в ваш проект Unity .
- Используйте интерфейс Unity для настройки проекта с целью минимизации сборок Android.
- Эту опцию можно найти в разделе «Настройки плеера» > «Android» > «Настройки публикации» > «Минимизировать» .
- Параметры могут отличаться в разных версиях Unity, поэтому обратитесь к официальной документации Unity и руководству по отладке сборки Firebase Unity .
- Если после включения минификации количество используемых методов по-прежнему превышает лимит, можно включить
multidexв следующем коде:-
mainTemplate.gradleесли включена опция "Пользовательский шаблон Gradle" в настройках проигрывателя. - или файл
build.gradleна уровне модуля, если вы используете Android Studio для сборки экспортированного проекта.
-
Для предотвращения Error while merging dex archives необходимо минимизировать сборку.
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 .export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json" - В производственной среде аутентификация не требуется, если вы запускаете приложение на App Engine или Compute Engine, используя тот же проект, что и для Cloud Firestore . В противном случае настройте учетную запись службы .
- Для аутентификации из среды разработки установите переменную среды
- Установите и включите расширение gRPC для PHP, которое вам понадобится для использования клиентской библиотеки.
- Добавьте PHP-библиотеку Cloud Firestore в свое приложение:
composer require google/cloud-firestore
C#
- Клиентские библиотеки сервера Cloud Firestore (Java, Node.js, Python, Go, PHP, C# и Ruby) используют учетные данные Google Application Default Credentials для аутентификации.
- Для аутентификации из среды разработки установите переменную среды
GOOGLE_APPLICATION_CREDENTIALSтак, чтобы она указывала на файл ключа сервисной учетной записи в формате JSON. Создать файл ключа можно на странице «Учетные данные» в консоли API .export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- В производственной среде аутентификация не требуется, если вы запускаете приложение на App Engine или Compute Engine, используя тот же проект, что и для Cloud Firestore . В противном случае настройте учетную запись службы .
- Для аутентификации из среды разработки установите переменную среды
- Добавьте библиотеку Cloud Firestore C# в ваше приложение в файле
.csproj:<ItemGroup> <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" /> </ItemGroup>
- Добавьте следующее в файл
Program.cs:using Google.Cloud.Firestore;
Руби
- Клиентские библиотеки сервера Cloud Firestore (Java, Node.js, Python, Go, PHP, C# и Ruby) используют учетные данные Google Application Default Credentials для аутентификации.
- Для аутентификации из среды разработки установите переменную среды
GOOGLE_APPLICATION_CREDENTIALSтак, чтобы она указывала на файл ключа сервисной учетной записи в формате JSON. Создать файл ключа можно на странице «Учетные данные» в консоли API .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 :
Web
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = getFirestore(app);
Замените FIREBASE_CONFIGURATION на значение firebaseConfig вашего веб-приложения.
Чтобы данные сохранялись при потере устройством соединения, см. документацию по включению автономной передачи данных .
Web
import firebase from "firebase/app"; import "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = firebase.firestore();
Замените FIREBASE_CONFIGURATION на значение firebaseConfig вашего веб-приложения.
Чтобы данные сохранялись при потере устройством соединения, см. документацию по включению автономной передачи данных .
Быстрый
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
Objective-C
@import FirebaseCore; @import FirebaseFirestore; // Use Firebase library to configure APIs [FIRApp configure];
FIRFirestore *defaultFirestore = [FIRFirestore firestore];
Kotlin
// Access a Cloud Firestore instance from your Activityval db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your ActivityFirebaseFirestore db = FirebaseFirestore.getInstance();
Dart
db = FirebaseFirestore.instance;
Java
Инициализация Cloud Firestore SDK осуществляется различными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для получения полной информации см. раздел «Инициализация 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 и администрирование > Сервисные учетные записи . Сгенерируйте новый закрытый ключ и сохраните 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
Инициализация Cloud Firestore SDK осуществляется различными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для получения полной информации см. раздел «Инициализация 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 и администрирование > Сервисные учетные записи . Сгенерируйте новый закрытый ключ и сохраните 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
Инициализация Cloud Firestore SDK осуществляется различными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для получения полной информации см. раздел «Инициализация 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 и администрирование > Сервисные учетные записи . Сгенерируйте новый закрытый ключ и сохраните 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()
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
Node.js
Инициализация Cloud Firestore SDK осуществляется различными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для получения полной информации см. раздел «Инициализация 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), используйте сервисную учетную запись . Перейдите в раздел IAM и администрирование > Сервисные учетные записи в консоли Google Cloud. Сгенерируйте новый закрытый ключ и сохраните 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();
Идти
Инициализация Cloud Firestore SDK осуществляется различными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для получения полной информации см. раздел «Инициализация 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 и администрирование > Сервисные учетные записи . Сгенерируйте новый закрытый ключ и сохраните 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 .
Единство
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Добавить данные
Cloud Firestore хранит данные в документах, которые хранятся в коллекциях. Cloud Firestore создает коллекции и документы автоматически при первом добавлении данных в документ. Вам не нужно создавать коллекции или документы явным образом.
Создайте новую коллекцию и документ, используя следующий пример кода.
Web
import { collection, addDoc } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Ada", last: "Lovelace", born: 1815 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web
db.collection("users").add({ first: "Ada", last: "Lovelace", born: 1815 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
Быстрый
// Add a new document with a generated ID do { let ref = try await db.collection("users").addDocument(data: [ "first": "Ada", "last": "Lovelace", "born": 1815 ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
Objective-C
// Add a new document with a generated ID __block FIRDocumentReference *ref = [[self.db collectionWithPath:@"users"] addDocumentWithData:@{ @"first": @"Ada", @"last": @"Lovelace", @"born": @1815 } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error adding document: %@", error); } else { NSLog(@"Document added with ID: %@", ref.documentID); } }];
Kotlin
// Create a new user with a first and last name val user = hashMapOf( "first" to "Ada", "last" to "Lovelace", "born" to 1815, ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Java
// Create a new user with a first and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Ada"); user.put("last", "Lovelace"); user.put("born", 1815); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Ada", "last": "Lovelace", "born": 1815 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
Java
Python
Python
C++
// Add a new document with a generated ID Future<DocumentReference> user_ref = db->Collection("users").Add({{"first", FieldValue::String("Ada")}, {"last", FieldValue::String("Lovelace")}, {"born", FieldValue::Integer(1815)}}); user_ref.OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
DocumentReference docRef = db.Collection("users").Document("alovelace"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Ada" }, { "Last", "Lovelace" }, { "Born", 1815 }, }; docRef.SetAsync(user).ContinueWithOnMainThread(task => { Debug.Log("Added data to the alovelace document in the users collection."); });
C#
Руби
Теперь добавьте еще один документ в коллекцию users . Обратите внимание, что этот документ содержит пару ключ-значение (отчество), которой нет в первом документе. Документы в коллекции могут содержать разные наборы информации.
Web
// Add a second document with a generated ID. import { addDoc, collection } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web
// Add a second document with a generated ID. db.collection("users").add({ first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
Быстрый
// Add a second document with a generated ID. do { let ref = try await db.collection("users").addDocument(data: [ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
Objective-C
// Add a second document with a generated ID. __block FIRDocumentReference *ref = [[self.db collectionWithPath:@"users"] addDocumentWithData:@{ @"first": @"Alan", @"middle": @"Mathison", @"last": @"Turing", @"born": @1912 } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error adding document: %@", error); } else { NSLog(@"Document added with ID: %@", ref.documentID); } }];
Kotlin
// Create a new user with a first, middle, and last name val user = hashMapOf( "first" to "Alan", "middle" to "Mathison", "last" to "Turing", "born" to 1912, ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Java
// Create a new user with a first, middle, and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Alan"); user.put("middle", "Mathison"); user.put("last", "Turing"); user.put("born", 1912); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
Java
Python
Python
C++
db->Collection("users") .Add({{"first", FieldValue::String("Alan")}, {"middle", FieldValue::String("Mathison")}, {"last", FieldValue::String("Turing")}, {"born", FieldValue::Integer(1912)}}) .OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
DocumentReference docRef = db.Collection("users").Document("aturing"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Alan" }, { "Middle", "Mathison" }, { "Last", "Turing" }, { "Born", 1912 } }; docRef.SetAsync(user).ContinueWithOnMainThread(task => { Debug.Log("Added data to the aturing document in the users collection."); });
C#
Руби
Прочитать данные
Воспользуйтесь средством просмотра данных в консоли Firebase , чтобы быстро убедиться, что вы добавили данные в Cloud Firestore .
Также можно использовать метод `get` для получения всей коллекции целиком.
Web
import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); });
Web
db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); }); });
Быстрый
do { let snapshot = try await db.collection("users").getDocuments() for document in snapshot.documents { print("\(document.documentID) => \(document.data())") } } catch { print("Error getting documents: \(error)") }
Objective-C
[[self.db collectionWithPath:@"users"] getDocumentsWithCompletion:^(FIRQuerySnapshot * _Nullable snapshot, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error getting documents: %@", error); } else { for (FIRDocumentSnapshot *document in snapshot.documents) { NSLog(@"%@ => %@", document.documentID, document.data); } } }];
Kotlin
db.collection("users") .get() .addOnSuccessListener { result -> for (document in result) { Log.d(TAG, "${document.id} => ${document.data}") } } .addOnFailureListener { exception -> Log.w(TAG, "Error getting documents.", exception) }
Java
db.collection("users") .get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if (task.isSuccessful()) { for (QueryDocumentSnapshot document : task.getResult()) { Log.d(TAG, document.getId() + " => " + document.getData()); } } else { Log.w(TAG, "Error getting documents.", task.getException()); } } });
Dart
await db.collection("users").get().then((event) { for (var doc in event.docs) { print("${doc.id} => ${doc.data()}"); } });
Java
Python
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Python
C++
Future<QuerySnapshot> users = db->Collection("users").Get(); users.OnCompletion([](const Future<QuerySnapshot>& future) { if (future.error() == Error::kErrorOk) { for (const DocumentSnapshot& document : future.result()->documents()) { std::cout << document << std::endl; } } else { std::cout << "Error getting documents: " << future.error_message() << std::endl; } });
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
CollectionReference usersRef = db.Collection("users"); usersRef.GetSnapshotAsync().ContinueWithOnMainThread(task => { QuerySnapshot snapshot = task.Result; foreach (DocumentSnapshot document in snapshot.Documents) { Debug.Log(String.Format("User: {0}", document.Id)); Dictionary<string, object> documentDictionary = document.ToDictionary(); Debug.Log(String.Format("First: {0}", documentDictionary["First"])); if (documentDictionary.ContainsKey("Middle")) { Debug.Log(String.Format("Middle: {0}", documentDictionary["Middle"])); } Debug.Log(String.Format("Last: {0}", documentDictionary["Last"])); Debug.Log(String.Format("Born: {0}", documentDictionary["Born"])); } Debug.Log("Read all data from the users collection."); });
C#
Руби
Защитите свои данные
Если вы используете SDK для веб-платформ, Android или Apple, используйте Firebase Authentication и Cloud Firestore Security Rules для защиты ваших данных в Cloud Firestore .
Вот несколько базовых наборов правил, которые вы можете использовать для начала работы. Вы можете изменить свои правила безопасности на вкладке «Правила» в консоли.
Требуется авторизация
// Allow read/write access to a document keyed by the user's UID
service cloud.firestore {
match /databases/{database}/documents {
match /users/{uid} {
allow read, write: if request.auth != null && request.auth.uid == uid;
}
}
}
Режим производства
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Прежде чем развертывать веб-приложение, приложение для Android или iOS в рабочей среде, также примите меры для обеспечения доступа к данным Cloud Firestore только для клиентов вашего приложения. См. документацию по проверке приложений .
Если вы используете один из серверных SDK, воспользуйтесь системой управления идентификацией и доступом (IAM) для защиты ваших данных в Cloud Firestore .
Посмотрите видеоурок
Для получения подробных инструкций по началу работы с библиотеками мобильных клиентов Cloud Firestore посмотрите один из следующих видеоуроков:
Веб
iOS+
Android
Больше видеороликов вы найдете на YouTube-канале Firebase.
Следующие шаги
Углубите свои знания по следующим темам:
- Codelabs — Научитесь использовать Cloud Firestore в реальном приложении, следуя инструкциям в Codelabs для Android , iOS или веб-приложения .
- Модель данных — Узнайте больше о структуре данных в Cloud Firestore , включая иерархическую структуру данных и подколлекции.
- Добавление данных — Узнайте больше о создании и обновлении данных в Cloud Firestore .
- Получение данных — Узнайте больше о том, как получить данные.
- Выполнение простых и составных запросов — Узнайте, как выполнять простые и составные запросы.
- Сортировка и ограничение запросов. Узнайте, как упорядочивать и ограничивать данные, возвращаемые вашими запросами.