В этом кратком руководстве показано, как настроить Cloud Firestore , добавить данные, а затем просмотреть только что добавленные данные в консоли Firebase.
Создайте базу данных Cloud Firestore
Создайте проект Firebase, если вы еще этого не сделали. В консоли Firebase нажмите «Добавить проект» , затем следуйте инструкциям на экране, чтобы создать проект Firebase или добавить сервисы Firebase в существующий проект GCP.
Перейдите в раздел Cloud Firestore консоли Firebase . Вам будет предложено выбрать существующий проект Firebase. Следуйте рабочему процессу создания базы данных.
Выберите режим запуска для 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 для каждой базы данных.
Выберите место для вашей базы данных.
Этот параметр местоположения является местоположением ресурса Google Cloud Platform (GCP) вашего проекта по умолчанию . Обратите внимание, что это местоположение будет использоваться для сервисов GCP в вашем проекте, для которых требуется настройка местоположения, в частности, для вашего сегмента Cloud Storage по умолчанию и вашего приложения App Engine (которое требуется, если вы используете Cloud Scheduler).
Если вы не можете выбрать местоположение, значит, в вашем проекте уже есть местоположение ресурса GCP по умолчанию. Он был установлен либо при создании проекта, либо при настройке другого сервиса, требующего настройки местоположения.
Нажмите Готово .
Когда вы включаете Cloud Firestore , он также включает API в Cloud API Manager .
Настройте среду разработки
Добавьте в свое приложение необходимые зависимости и клиентские библиотеки.
Web
- Следуйте инструкциям, чтобы добавить Firebase в свое веб-приложение .
- Добавьте библиотеки Firebase и Cloud Firestore в свое приложение:
<script src="https://www.gstatic.com/firebasejs/10.14.0/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/10.14.0/firebase-firestore-compat.js"></script>
Cloud Firestore SDK также доступен в виде пакета npm.npm install firebase@10.14.0 --save
Вам потребуется вручную запросить Firebase и Cloud Firestore .import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
Web
- Следуйте инструкциям, чтобы добавить Firebase в свое веб-приложение .
- Cloud Firestore SDK доступен в виде пакета npm.
npm install firebase@10.14.0 --save
Вам нужно будет импортировать Firebase и Cloud Firestore .import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
Следуйте инструкциям, чтобы добавить Firebase в свое приложение Apple .
Используйте Swift Package Manager для установки зависимостей Firebase и управления ими.
- В Xcode, открыв проект приложения, выберите «Файл» > «Пакеты Swift» > «Добавить зависимость пакета» .
- При появлении запроса добавьте репозиторий Firebase SDK для платформ Apple:
- Выберите библиотеку Firestore.
- По завершении Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk
Андроид
- Следуйте инструкциям, чтобы добавить 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:33.4.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:25.1.0") }
Ищете библиотечный модуль, специфичный для Kotlin? Начиная с релиза за октябрь 2023 года , от основного модуля библиотеки могут зависеть как разработчики Kotlin, так и Java (подробнее см. FAQ по этой инициативе ).
Dart
- Если вы еще этого не сделали, настройте и инициализируйте Firebase в своем приложении Flutter.
- Из корня вашего проекта Flutter выполните следующую команду, чтобы установить плагин:
flutter pub add cloud_firestore
- После завершения перестройте приложение Flutter:
flutter run
- Необязательно: улучшите время сборки iOS и macOS, включив предварительно скомпилированную платформу.
В настоящее время Firestore SDK для iOS зависит от кода, сборка которого в Xcode может занять более 5 минут. Чтобы значительно сократить время сборки, вы можете использовать предварительно скомпилированную версию, добавив эту строку в
target 'Runner' do
в вашем подфайле: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 .
Ява
- Добавьте Firebase Admin SDK в свое приложение:
- Использование Градла:
compile 'com.google.firebase:firebase-admin:1.32.0'
- Использование Мавена:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>1.32.0</version> </dependency>
- Использование Градла:
- Следуйте инструкциям ниже, чтобы инициализировать Cloud Firestore с соответствующими учетными данными в вашей среде.
Питон
- Добавьте Firebase Admin SDK в свое приложение Python:
pip install --upgrade firebase-admin
- Следуйте инструкциям ниже, чтобы инициализировать Cloud Firestore с соответствующими учетными данными в вашей среде.
С++
- Следуйте инструкциям, чтобы добавить 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 Build Debug Guide .
- Если после включения минификации количество ссылочных методов все еще превышает лимит, другой вариант — включить
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 по умолчанию для аутентификации.
- Чтобы пройти аутентификацию в среде разработки, установите переменную среды
GOOGLE_APPLICATION_CREDENTIALS
, чтобы она указывала на файл ключей сервисного аккаунта JSON. Создать ключевой файл можно на странице API Console Credentials .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
С#
- Клиентские библиотеки сервера Cloud Firestore (Java, Node.js, Python, Go, PHP, C# и Ruby) используют учетные данные приложения Google по умолчанию для аутентификации.
- Чтобы пройти аутентификацию в среде разработки, установите переменную среды
GOOGLE_APPLICATION_CREDENTIALS
, чтобы она указывала на файл ключей сервисного аккаунта JSON. Создать ключевой файл можно на странице API Console Credentials .export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- В вашей производственной среде вам не требуется проходить аутентификацию, если вы запускаете приложение в App Engine или Compute Engine, используя тот же проект, который вы используете для Cloud Firestore . В противном случае настройте учетную запись службы .
- Чтобы пройти аутентификацию в среде разработки, установите переменную среды
- Добавьте библиотеку C# Cloud Firestore в свое приложение в файле
.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 по умолчанию для аутентификации.
- Чтобы пройти аутентификацию в среде разработки, установите переменную среды
GOOGLE_APPLICATION_CREDENTIALS
, чтобы она указывала на файл ключей сервисного аккаунта JSON. Создать ключевой файл можно на странице API Console Credentials .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()
Цель-C
@import FirebaseCore; @import FirebaseFirestore; // Use Firebase library to configure APIs [FIRApp configure];
FIRFirestore *defaultFirestore = [FIRFirestore firestore];
Kotlin+KTX
// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your Activity
FirebaseFirestore db = FirebaseFirestore.getInstance();
Dart
db = FirebaseFirestore.instance;
Ява
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 на своем сервере, используйте сервисную учетную запись .
Откройте IAM и администрирование > Сервисные учетные записи в консоли Google Cloud. Создайте новый закрытый ключ и сохраните файл 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 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 на своем сервере, используйте сервисную учетную запись .
Откройте IAM и администрирование > Сервисные учетные записи в консоли Google Cloud. Создайте новый закрытый ключ и сохраните файл 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 на своем сервере, используйте сервисную учетную запись .
Откройте IAM и администрирование > Сервисные учетные записи в консоли Google Cloud. Создайте новый закрытый ключ и сохраните файл 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()
С++
// 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 на своем сервере, используйте сервисную учетную запись .
Откройте IAM и администрирование > Сервисные учетные записи в консоли Google Cloud. Создайте новый закрытый ключ и сохраните файл 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;
С#
С#
Дополнительную информацию об установке и создании клиента 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)") }
Цель-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+KTX
// 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}'));
Ява
Питон
Python
С++
// 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."); });
С#
Руби
Теперь добавьте еще один документ в коллекцию 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)") }
Цель-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+KTX
// 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}'));
Ява
Питон
Python
С++
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."); });
С#
Руби
Чтение данных
Используйте средство просмотра данных в консоли 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)") }
Цель-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+KTX
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()}"); } });
Ява
Питон
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Python
С++
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."); });
С#
Руби
Защитите свои данные
Если вы используете SDK для веб-платформ, Android или Apple, используйте аутентификацию Firebase и 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+
Андроид
Больше видео вы можете найти на YouTube-канале Firebase.
Следующие шаги
Углубите свои знания по следующим темам:
- Лаборатории кода — научитесь использовать Cloud Firestore в реальном приложении, следуя лаборатории кода для Android , iOS или Интернета .
- Модель данных . Узнайте больше о том, как структурируются данные в Cloud Firestore , включая иерархические данные и подколлекции.
- Добавление данных . Узнайте больше о создании и обновлении данных в Cloud Firestore .
- Получить данные . Узнайте больше о том, как получить данные.
- Выполнение простых и составных запросов . Узнайте, как выполнять простые и составные запросы.
- Упорядочение и ограничение запросов Узнайте, как упорядочить и ограничить данные, возвращаемые запросами.