В этом кратком руководстве показано, как настроить Cloud Firestore, добавить данные, а затем просмотреть только что добавленные данные в консоли Firebase.
Создайте базу данных Cloud Firestore
Если вы еще этого не сделали, создайте проект Firebase. В консоли Firebase нажмите «Добавить проект» и следуйте инструкциям на экране, чтобы создать проект Firebase или добавить сервисы Firebase в существующий проект GCP.
Перейдите в раздел Cloud Firestore консоли Firebase . Вам будет предложено выбрать существующий проект Firebase. Следуйте рабочему процессу создания базы данных.
Выберите начальный режим для ваших правил безопасности Cloud Firestore:
- Режим тестирования
Хорошо подходит для начала работы с мобильными и веб-клиентскими библиотеками, но позволяет любому читать и перезаписывать ваши данные. После тестирования обязательно ознакомьтесь с разделом «Защитите свои данные» .
Чтобы начать работу с Интернетом, платформами Apple или Android SDK, выберите тестовый режим.
- Заблокированный режим
Запрещает все операции чтения и записи из мобильных и веб-клиентов. Ваши аутентифицированные серверы приложений (C#, Go, Java, Node.js, PHP, Python или Ruby) по-прежнему могут получать доступ к вашей базе данных.
Чтобы начать работу с клиентской библиотекой сервера C#, Go, Java, Node.js, PHP, Python или Ruby, выберите заблокированный режим.
Выберите место для вашей базы данных.
Этот параметр местоположения является расположением ресурса Google Cloud Platform (GCP) по умолчанию для вашего проекта . Обратите внимание, что это местоположение будет использоваться для сервисов GCP в вашем проекте, для которых требуется настройка местоположения, в частности, для вашей корзины Cloud Storage по умолчанию и вашего приложения App Engine (что требуется, если вы используете Cloud Scheduler).
Если вы не можете выбрать местоположение, значит, в вашем проекте уже есть местоположение ресурса GCP по умолчанию. Он был установлен либо при создании проекта, либо при настройке другого сервиса, требующего настройки местоположения.
Щелкните Готово .
Когда вы включаете Cloud Firestore, он также включает API в Cloud API Manager .
Настройте среду разработки
Добавьте в приложение необходимые зависимости и клиентские библиотеки.
Web namespaced API
- Следуйте инструкциям, чтобы добавить Firebase в ваше веб-приложение .
- Добавьте библиотеки Firebase и Cloud Firestore в свое приложение:
<script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-firestore-compat.js"></script>
SDK Cloud Firestore также доступен в виде пакета npm.npm install firebase@9.22.1 --save
Вам нужно будет вручную потребовать как Firebase, так и Cloud Firestore.import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
Web modular API
- Следуйте инструкциям, чтобы добавить Firebase в ваше веб-приложение .
- Cloud Firestore SDK доступен в виде пакета npm.
npm install firebase@9.22.1 --save
Вам нужно будет импортировать как Firebase, так и Cloud Firestore.import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
Следуйте инструкциям, чтобы добавить Firebase в приложение Apple .
Используйте диспетчер пакетов Swift для установки и управления зависимостями Firebase.
- В Xcode при открытом проекте приложения перейдите в File > Swift Packages > Add Package Dependency .
- При появлении запроса добавьте репозиторий SDK Firebase для платформ Apple:
- Выберите библиотеку Firestore.
- Когда закончите, Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk
Kotlin+KTX
- Следуйте инструкциям, чтобы добавить Firebase в свое приложение для Android .
- Используя Firebase Android BoM , объявите зависимость для библиотеки Cloud Firestore Android в файле Gradle вашего модуля (на уровне приложения) (обычно
app/build.gradle
).dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.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-ktx' }
Используя 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-ktx:24.6.1' }
Java
- Следуйте инструкциям, чтобы добавить Firebase в свое приложение для Android .
- Используя Firebase Android BoM , объявите зависимость для библиотеки Cloud Firestore Android в файле Gradle вашего модуля (на уровне приложения) (обычно
app/build.gradle
).dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.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:24.6.1' }
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 pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '8.15.0' # ... end
Кроме того, убедитесь, что вы обновили 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++ .
- Интерфейс С++ для 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 в разделе «Настройки для Android» выберите «Настройки публикации».
- В разделе «Минимизировать» измените настройки «Выпуск» и «Отладка» с «Нет» на «ProGuard».
При сборке для Android включите ProGuarding, чтобы избежать ограничения Android DEX. Для этого в редакторе Unity:
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 .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 .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 .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 .
Инициализировать облачное хранилище Firestore
Инициализируйте экземпляр Cloud Firestore:
Web modular API
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 namespaced API
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 .- Инициализировать облачные функции
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 modular API
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 namespaced API
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 var ref: DocumentReference? = nil ref = db.collection("users").addDocument(data: [ "first": "Ada", "last": "Lovelace", "born": 1815 ]) { err in if let err = err { print("Error adding document: \(err)") } else { print("Document added with ID: \(ref!.documentID)") } }
Цель-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 modular API
// 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 namespaced API
// 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. ref = db.collection("users").addDocument(data: [ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 ]) { err in if let err = err { print("Error adding document: \(err)") } else { print("Document added with ID: \(ref!.documentID)") } }
Цель-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 modular API
import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); });
Web namespaced API
db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); }); });
Быстрый
db.collection("users").getDocuments() { (querySnapshot, err) in if let err = err { print("Error getting documents: \(err)") } else { for document in querySnapshot!.documents { print("\(document.documentID) => \(document.data())") } } }
Цель-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 для платформ Web, Android или Apple, используйте Firebase Authentication и правила безопасности Cloud Firestore для защиты ваших данных в Cloud Firestore.
Вот несколько основных наборов правил, которые вы можете использовать для начала. Вы можете изменить свои правила безопасности на вкладке «Правила» консоли.
Требуется авторизация
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Заблокированный режим
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Режим тестирования
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
Прежде чем развертывать свое веб-приложение, приложение для Android или iOS в рабочей среде, также примите меры, чтобы только клиенты вашего приложения могли получить доступ к вашим данным Cloud Firestore. См. документацию по проверке приложений .
Если вы используете один из серверных SDK, используйте Identity and Access Management (IAM) для защиты ваших данных в Cloud Firestore.
Посмотреть видеоурок
Подробные инструкции по началу работы с мобильными клиентскими библиотеками Cloud Firestore см. в одном из следующих видеоуроков:
Интернет
iOS+
Андроид
Больше видео вы можете найти на YouTube-канале Firebase.
Следующие шаги
Углубите свои знания по следующим темам:
- Лаборатории кода — научитесь использовать Cloud Firestore в реальном приложении, следуя лабораторной работе для Android , iOS или Интернета .
- Модель данных — узнайте больше о том, как данные структурированы в Cloud Firestore, включая иерархические данные и вложенные коллекции.
- Добавить данные — узнайте больше о создании и обновлении данных в Cloud Firestore.
- Получить данные — Узнайте больше о том, как получить данные.
- Выполнение простых и составных запросов — Узнайте, как выполнять простые и составные запросы.
- Порядок и ограничение запросов Узнайте, как упорядочить и ограничить данные, возвращаемые вашими запросами.