В этом кратком руководстве рассказывается, как настроить Cloud Firestore, добавить данные и посмотреть их в консоли Firebase.
Cloud Firestore поддерживает SDK для мобильных устройств и веб-сайтов, а также клиентские библиотеки для серверов:
Cloud Firestore поддерживает SDK для Android, iOS, веб-сайтов и других платформ. В сочетании с Cloud Firestore Security Rules и Firebase Authentication SDK для мобильных устройств и веб-приложений поддерживают бессерверные архитектуры приложений, в которых клиенты подключаются непосредственно к вашей базе данных Cloud Firestore.
Cloud Firestore поддерживает серверные клиентские библиотеки для C#, Go, Java, Node.js, PHP, Python и Ruby. Используйте эти клиентские библиотеки, чтобы настроить привилегированные серверные среды с полным доступом к базе данных. Подробнее об этих библиотеках рассказывается в кратком руководстве по клиентским библиотекам для серверов.
Запрос к ИИ для получения помощи от ИИ
Чтобы получить помощь от ИИ, скопируйте запрос ниже и вставьте его в свой ИИ-агент для программирования (например, Gemini в Android Studio, Antigravity, Claude Code, Codex или Cursor). Вы можете настроить запрос и повторить его с агентом. Подробные инструкции по установке вы найдете в статье Навыки агента Firebase.
Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me set up and use Firebase for the backend of my app. Set up Firestore database in **Standard edition**. Help me to choose the best location for my database instance.
Создайте базу данных Cloud Firestore
Если у вас ещё нет проекта Firebase, создайте его. Для этого в консоли Firebase нажмите Добавить проект и следуйте инструкциям на экране. Вы также можете добавить сервисы Firebase в существующий проект Google Cloud.
На панели слева выберите Databases & Storage (Базы данных и хранилище) > Firestore.
Нажмите Create database (Создать базу данных).
Выберите местоположение для базы данных.
Если вы не можете выбрать местоположение, значит местоположение для ресурсов Google Cloud по умолчанию уже задано. Некоторые ресурсы проекта (например, экземпляр Cloud Firestore по умолчанию) имеют общую зависимость от местоположения, и их местоположение можно задать либо во время создания проекта, либо при настройке другого сервиса, который имеет эту зависимость от местоположения.
Выберите режим запуска для устройства "Cloud Firestore Security Rules":
- Режим тестирования
Подходит для начала работы с клиентскими библиотеками для мобильных устройств и веб-клиентов, но позволяет любому пользователю читать и перезаписывать ваши данные. После тестирования обязательно ознакомьтесь с разделом Защита данных.
Чтобы начать работу с SDK для веб-сайтов, платформ Apple или Android, выберите тестовый режим.
- Производственный режим
Запрещает все операции чтения и записи для мобильных и веб-клиентов. Ваши аутентифицированные серверы приложений (C#, Go, Java, Node.js, PHP, Python или Ruby) по-прежнему могут получить доступ к вашей базе данных.
Чтобы начать работу с серверной клиентской библиотекой C#, Go, Java, Node.js, PHP, Python или Ruby, выберите производственный режим.
Начальный набор Cloud Firestore Security Rules будет применен к базе данных Cloud Firestore по умолчанию. Если вы создадите несколько баз данных для проекта, то сможете развернуть Cloud Firestore Security Rules для каждой из них.
Нажмите Создать.
При включении Cloud Firestore также включается API в Cloud API Manager.
Как настроить среду разработки
Добавьте в приложение необходимые зависимости и клиентские библиотеки.
Web
- Следуйте инструкциям, чтобы добавить Firebase в веб-приложение.
-
SDK Cloud Firestore доступен в виде пакета npm.
Вам нужно импортировать Firebase и Cloud Firestore.npm install firebase@13.0.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
Web
- Следуйте инструкциям, чтобы добавить Firebase в веб-приложение.
- Добавьте в приложение библиотеки Firebase и Cloud Firestore:
SDK Cloud Firestore также доступен в виде пакета npm.<script src="https://www.gstatic.com/firebasejs/13.0.0/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/13.0.0/firebase-firestore-compat.js"></script>
Вам потребуется вручную подключить Firebase и Cloud Firestore.npm install firebase@13.0.0 --save
import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
iOS+
Следуйте инструкциям, чтобы добавить Firebase в приложение Apple.
Для установки зависимостей Firebase и управления ими используйте Swift Package Manager.
- Откройте проект приложения в Xcode и перейдите в меню File (Файл) > Swift Packages (Пакеты Swift) > Add Package Dependency (Добавить зависимость пакетов).
- Когда появится запрос, добавьте хранилище Firebase SDK для платформ Apple:
- Выберите библиотеку Firestore.
- После этого Xcode автоматически начнет распознавать и скачивать зависимости в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk
Android
- Следуйте инструкциям, чтобы добавить Firebase в приложение для Android.
- Используя Firebase Android BoM, укажите зависимость для библиотеки Cloud Firestore для Android в модульном файле Gradle на уровне приложения (обычно
app/build.gradle.ktsилиapp/build.gradle).dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.1")) // 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:27.0.0") }
Ищете модуль библиотеки для Kotlin? Начиная с октябрьского выпуска 2023 года, разработчики, использующие Kotlin и Java, могут зависеть от основного модуля библиотеки. Подробную информацию вы найдете в разделе часто задаваемых вопросов об этой инициативе.
Dart
- Если вы ещё этого не сделали, настройте и инициализируйте Firebase в приложении Flutter.
- Чтобы установить плагин, выполните следующую команду в корневом каталоге проекта Flutter:
flutter pub add cloud_firestore
- После этого пересоберите приложение Flutter:
flutter run
- Необязательно. Чтобы ускорить сборку для iOS и macOS, включите предварительно скомпилированный фреймворк.
В настоящее время Firestore SDK для iOS зависит от кода, сборка которого в Xcode может занимать более пяти минут. Чтобы значительно сократить время сборки, вы можете использовать предварительно скомпилированную версию, добавив следующую строку в блок
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.
C++
- Следуйте инструкциям, чтобы добавить Firebase в проект C++.
- Интерфейс C++ для Android.
- Зависимости Gradle. Добавьте в файл Gradle на уровне модуля (обычно
app/build.gradle) следующий код:android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { // earlier entries auth firestore }
- Бинарные зависимости. Аналогичным образом рекомендуется получить двоичные зависимости, добавив в файл
CMakeLists.txtследующее:add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) set(firebase_libs firebase_auth firebase_firestore firebase_app) # Replace the target name below with the actual name of your target, # for example, "native-lib". target_link_libraries(${YOUR_TARGET_NAME_HERE} "${firebase_libs}")
- Чтобы настроить интеграцию с компьютером, ознакомьтесь со статьей Как добавить Firebase в проект C++.
Unity
- Следуйте инструкциям по добавлению Firebase в проект Unity.
- Настройте минификацию сборок Android в интерфейсе Unity.
- Для этого выберите Player Settings (Настройки проигрывателя) > Android > Publishing Settings (Настройки публикации) > Minify (Минифицировать).
- Варианты могут различаться в зависимости от версии Unity. Ознакомьтесь с официальной документацией Unity и руководством по отладке сборки Firebase Unity.
-
Если после включения минификации количество методов по-прежнему превышает лимит, можно включить
multidexв файле-
mainTemplate.gradle, если включен параметр Custom Gradle Template (Собственный шаблон Gradle) в разделе Player Settings (Настройки проигрывателя). -
или в файл
build.gradleна уровне модуля, если вы используете Android Studio для сборки экспортированного проекта.
-
Чтобы избежать сообщения Error while merging dex archives, необходимо минимизировать сборку.
(Необязательно) Создание прототипов и тестирование с помощью 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 вашего веб-приложения.
Чтобы сохранить данные, когда устройство теряет подключение, ознакомьтесь с документацией Включить офлайн-данные.
Swift
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
Objective-C
@import FirebaseCore; @import FirebaseFirestore; // Use Firebase library to configure APIs [FIRApp configure];
FIRFirestore *defaultFirestore = [FIRFirestore firestore];
Kotlin
// Access a Cloud Firestore instance from your Activityval db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your ActivityFirebaseFirestore db = FirebaseFirestore.getInstance();
Dart
db = FirebaseFirestore.instance;
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
Unity
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
Добавить данные
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); });
Swift
// 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}'));
C++
// Add a new document with a generated ID Future<DocumentReference> user_ref = db->Collection("users").Add({{"first", FieldValue::String("Ada")}, {"last", FieldValue::String("Lovelace")}, {"born", FieldValue::Integer(1815)}}); user_ref.OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Unity
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); });
Swift
// 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}'));
C++
db->Collection("users") .Add({{"first", FieldValue::String("Alan")}, {"middle", FieldValue::String("Mathison")}, {"last", FieldValue::String("Turing")}, {"born", FieldValue::Integer(1912)}}) .OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Unity
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()); }); });
Swift
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()}"); } });
C++
Future<QuerySnapshot> users = db->Collection("users").Get(); users.OnCompletion([](const Future<QuerySnapshot>& future) { if (future.error() == Error::kErrorOk) { for (const DocumentSnapshot& document : future.result()->documents()) { std::cout << document << std::endl; } } else { std::cout << "Error getting documents: " << future.error_message() << std::endl; } });
Unity
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 Authentication и Cloud Firestore Security Rules, чтобы защитить данные в Cloud Firestore.
Ниже приведены примеры наборов правил, которые можно использовать в качестве основы. Изменить правила безопасности можно в консоли Firebase на вкладке Databases & Storage (Базы данных и хранилище) > Firestore > Rules (Правила).
Требуется аутентификация
// 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, то для защиты данных в Cloud Firestore используйте Identity and Access Management (IAM).
Посмотрите видеоруководство
Чтобы узнать, как начать работу с клиентскими библиотеками Cloud Firestore для мобильных устройств, посмотрите одно из следующих видеоруководств:
Веб-приложение
iOS+
Android
Больше видео вы найдете на YouTube-канале Firebase.
Дальнейшие действия
Углубите свои знания по следующим темам:
- Практические работы. Узнайте, как использовать Cloud Firestore в реальном приложении, выполнив практическую работу для Android, iOS или веб-приложений.
- Модель данных. Узнайте, как структурируются данные в Cloud Firestore, в том числе об иерархических данных и подколлекциях.
- Добавление данных. Узнайте, как создавать и обновлять данные в Cloud Firestore.
- Получение данных. Узнайте, как извлекать данные.
- Выполнение простых и составных запросов – узнайте, как выполнять простые и составные запросы.
- Сортировка и ограничение запросов. Узнайте, как сортировать и ограничивать данные, возвращаемые запросами.
- Навыки агента Firebase. Узнайте, как улучшить инструменты разработки ИИ, чтобы эффективнее выполнять задачи и использовать рекомендации Cloud Firestore (например, писать Cloud Firestore Security Rules).