В этом кратком руководстве показано, как настроить Cloud Firestore , добавить данные, а затем просмотреть только что добавленные данные в консоли Firebase.
Создать базу данных Cloud Firestore
Если вы еще этого не сделали, создайте проект Firebase: в консоли Firebase нажмите « Добавить проект» , затем следуйте инструкциям на экране, чтобы создать проект Firebase или добавить службы Firebase в существующий проект Google Cloud .
Откройте свой проект в консоли Firebase . На левой панели разверните Build и выберите Firestore database .
Нажмите Создать базу данных .
Выберите место для вашей базы данных.
Если вы не можете выбрать местоположение, то "местоположение для ресурсов 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 в ваше веб-приложение .
- Cloud Firestore SDK доступен в виде пакета npm.
Вам необходимо импортировать как Firebase, так и Cloud Firestore .npm install firebase@11.7.1 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
Web
- Следуйте инструкциям по добавлению Firebase в ваше веб-приложение .
- Добавьте библиотеки Firebase и Cloud Firestore в свое приложение:
Cloud Firestore SDK также доступен в виде пакета npm.<script src="https://www.gstatic.com/firebasejs/11.7.1/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/11.7.1/firebase-firestore-compat.js"></script>
Вам необходимо вручную потребовать Firebase и Cloud Firestore .npm install firebase@11.7.1 --save
import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
iOS+
Следуйте инструкциям по добавлению Firebase в приложение Apple .
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
- В Xcode откройте проект приложения и перейдите в меню Файл > Пакеты Swift > Добавить зависимость пакета .
- При появлении соответствующего запроса добавьте репозиторий Firebase Apple platform SDK:
- Выберите библиотеку 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.13.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.4") }
Ищете модуль библиотеки, специфичный для Kotlin? Начиная с релиза октября 2023 года , разработчики Kotlin и Java могут положиться на основной модуль библиотеки (подробности см. в разделе часто задаваемых вопросов об этой инициативе ).
Dart
- Если вы еще этого не сделали, настройте и инициализируйте Firebase в своем приложении Flutter.
- Из корня вашего проекта Flutter выполните следующую команду для установки плагина:
flutter pub add cloud_firestore
- После завершения перестройте приложение Flutter:
flutter run
- Дополнительно: ускорьте сборку iOS и macOS, включив предварительно скомпилированный фреймворк.
В настоящее время Firestore SDK для 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 .
Ява
- Добавьте Firebase Admin SDK в свое приложение:
- Использование Gradle:
compile 'com.google.firebase:firebase-admin:1.32.0'
- Использование Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>1.32.0</version> </dependency>
- Использование Gradle:
- Следуйте инструкциям ниже, чтобы инициализировать 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 .
- Если после включения минификации количество указанных методов все еще превышает лимит, другим вариантом является включение
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
С#
- Клиентские библиотеки сервера 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 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 инициализируется разными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для полной справки см. Initialize the 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 & admin > Service accounts в консоли 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 инициализируется разными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для полной справки см. Initialize the 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 & admin > Service accounts в консоли 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 инициализируется разными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для полной справки см. Initialize the 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 & admin > Service accounts в консоли 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 инициализируется разными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для полной справки см. Initialize the 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 & admin > Учетные записи служб в консоли 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 инициализируется разными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для полной справки см. Initialize the 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 & admin > Service accounts в консоли 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)") }
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}'));
Ява
Питон
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)") }
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}'));
Ява
Питон
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)") }
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()}"); } });
Ява
Питон
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+
андроид
Больше видео вы можете найти на канале Firebase на YouTube .
Следующие шаги
Углубите свои знания по следующим темам:
- Практические занятия — научитесь использовать Cloud Firestore в реальном приложении, выполнив практические занятия для Android , iOS или веб-приложений .
- Модель данных — узнайте больше о том, как структурированы данные в Cloud Firestore , включая иерархические данные и вложенные коллекции.
- Добавление данных — Узнайте больше о создании и обновлении данных в Cloud Firestore .
- Получить данные — Узнайте больше о том, как получить данные.
- Выполнение простых и составных запросов — Узнайте, как выполнять простые и составные запросы.
- Упорядочивание и ограничение запросов Узнайте, как упорядочивать и ограничивать данные, возвращаемые вашими запросами.