Questa guida rapida mostra come configurare Cloud Firestore, aggiungere dati e visualizzare i dati appena aggiunti nella console Firebase.
Cloud Firestore supporta gli SDK web o per dispositivi mobili e le librerie client server:
Cloud Firestore supporta SDK per Android, iOS, web e altro ancora. In combinazione con Cloud Firestore Security Rules e Firebase Authentication, gli SDK web e mobile supportano architetture di app serverless in cui i client si connettono direttamente al tuo database Cloud Firestore.
Cloud Firestore supporta le librerie client server per C#, Go, Java, Node.js, PHP, Python e Ruby. Utilizza queste librerie client per configurare ambienti server privilegiati con accesso completo al tuo database. Scopri di più su queste librerie nella guida rapida alle librerie client server.
Crea un database Cloud Firestore
Se non l'hai ancora fatto, crea un progetto Firebase: nella console Firebase, fai clic su Aggiungi progetto, poi segui le istruzioni sullo schermo per creare un progetto Firebase o per aggiungere i servizi Firebase a un progetto Google Cloud esistente.
Apri il progetto nella console Firebase. Nel riquadro a sinistra, espandi Build e poi seleziona Database Firestore.
Fai clic su Crea database.
Seleziona una posizione per il tuo database.
Se non riesci a selezionare una località, significa che la "posizione per le risorse Google Cloud predefinite" del progetto è già stata impostata. Alcune risorse del tuo progetto (come l'istanza Cloud Firestore predefinita) condividono una dipendenza di località comune e la loro località può essere impostata durante la creazione del progetto o durante la configurazione di un altro servizio che condivide questa dipendenza di località.
Seleziona una modalità iniziale per Cloud Firestore Security Rules:
- Modalità di test
Ideale per iniziare a utilizzare le librerie client web e mobile, ma consente a chiunque di leggere e sovrascrivere i tuoi dati. Dopo il test, assicurati di esaminare la sezione Proteggere i dati.
Per iniziare a utilizzare l'SDK per il web, le piattaforme Apple o Android, seleziona la modalità di test.
- Modalità di produzione
Nega tutte le operazioni di lettura e scrittura dei client web e su dispositivi mobili. I server delle applicazioni autenticati (C#, Go, Java, Node.js, PHP, Python o Ruby) possono comunque accedere al tuo database.
Per iniziare a utilizzare la libreria client server C#, Go, Java, Node.js, PHP, Python o Ruby, seleziona la modalità di produzione.
Il set iniziale di Cloud Firestore Security Rules verrà applicato al database Cloud Firestore predefinito. Se crei più database per il tuo progetto, puoi eseguire il deployment di Cloud Firestore Security Rules per ogni database.
Fai clic su Crea.
Quando abiliti Cloud Firestore, viene abilitata anche l'API in Cloud API Manager.
Configurazione dell'ambiente di sviluppo
Aggiungi le dipendenze e le librerie client necessarie alla tua app.
Web
- Segui le istruzioni per aggiungere Firebase alla tua app web.
-
L'SDK Cloud Firestore è disponibile come pacchetto npm.
Devi importare sia Firebase che Cloud Firestore.npm install firebase@12.8.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
Web
- Segui le istruzioni per aggiungere Firebase alla tua app web.
- Aggiungi le librerie Firebase e Cloud Firestore alla tua app:
L'SDK Cloud Firestore è disponibile anche come pacchetto npm.<script src="https://www.gstatic.com/firebasejs/12.8.0/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/12.8.0/firebase-firestore-compat.js"></script>
Dovrai richiedere manualmente sia Firebase che Cloud Firestore.npm install firebase@12.8.0 --save
import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
iOS+
Segui le istruzioni per aggiungere Firebase alla tua app Apple.
Utilizza Swift Package Manager per installare e gestire le dipendenze di Firebase.
- In Xcode, con il progetto dell'app aperto, vai a File > Swift Packages > Add Package Dependency (File > Pacchetti Swift > Aggiungi dipendenza pacchetto).
- Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple di Firebase:
- Scegli la libreria Firestore.
- Al termine, Xcode inizierà automaticamente a risolvere e a scaricare le tue dipendenze in background.
https://github.com/firebase/firebase-ios-sdk
Android
- Segui le istruzioni per aggiungere Firebase alla tua app Android.
- Utilizzando la
distinta base di Firebase Android,
dichiara la dipendenza per la libreria Cloud Firestore per Android nel
file Gradle (a livello di app) del modulo
(solitamente
app/build.gradle.ktsoapp/build.gradle).dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.8.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") }
Utilizzando la distinta base di Firebase Android, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase Android.
(Alternativa) Dichiara le dipendenze della libreria Firebase senza utilizzare BoM
Se scegli di non utilizzare Firebase BoM, devi specificare ogni versione della libreria Firebase nella riga di dipendenza.
Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la BoM per gestire le versioni delle librerie, in modo da garantire la compatibilità di tutte le versioni.
dependencies { // Declare the dependency for the Cloud Firestore library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-firestore:26.1.0") }
Cerchi un modulo della libreria specifico per Kotlin? A partire dalla release di ottobre 2023, gli sviluppatori Kotlin e Java possono fare affidamento sul modulo della libreria principale (per i dettagli, consulta le domande frequenti su questa iniziativa).
Dart
- Se non l'hai ancora fatto, configura e inizializza Firebase nella tua app Flutter.
- Dalla radice del progetto Flutter, esegui questo comando per installare il plug-in:
flutter pub add cloud_firestore
- Al termine, ricompila l'applicazione Flutter:
flutter run
- (Facoltativo) Migliora i tempi di compilazione di iOS e macOS includendo il
framework precompilato.
Attualmente, l'SDK Firestore per iOS dipende da codice la cui compilazione in Xcode può richiedere più di 5 minuti. Per ridurre in modo significativo i tempi di compilazione, puoi utilizzare una versione precompilata aggiungendo questa riga al blocco
target 'Runner' donel 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 endSostituisci IOS_SDK_VERSION con la versione dell'SDK Firebase per iOS specificata nel file
firebase_sdk_version.rbdifirebase_core. Se non utilizzi l'ultima versione difirebase_core, cerca questo file nella cache del pacchetto Pub locale (di solito~/.pub-cache).Inoltre, assicurati di aver eseguito l'upgrade di CocoaPods alla versione 1.9.1 o successive:
gem install cocoapods
Per maggiori informazioni, consulta il problema su GitHub.
C++
- Segui le istruzioni per aggiungere Firebase al tuo progetto C++.
- Interfaccia C++ per Android.
- Dipendenze di Gradle. Aggiungi quanto segue al file Gradle
(a livello di app) del modulo (solitamente
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 }
- Dipendenze binarie. Allo stesso modo, il modo consigliato per ottenere
le dipendenze binarie è aggiungere quanto segue al file
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}")
- Per configurare l'integrazione desktop, consulta Aggiungere Firebase al tuo progetto C++.
Unity
- Segui le istruzioni per aggiungere Firebase al tuo progetto Unity.
- Utilizza l'interfaccia Unity per configurare il progetto in modo da ridurre le build Android.
- L'opzione si trova in Impostazioni del giocatore > Android > Impostazioni di pubblicazione > Minify.
- Le opzioni potrebbero variare nelle diverse versioni di Unity, quindi consulta la documentazione di Unity ufficiale e la guida al debug della build di Firebase Unity.
-
Se, dopo aver attivato la minimizzazione, il numero di metodi a cui viene fatto riferimento
supera ancora il limite, un'altra opzione è attivare
multidexin:-
mainTemplate.gradlese l'opzione Modello Gradle personalizzato in Impostazioni giocatore è abilitata -
o il file
build.gradlea livello di modulo, se utilizzi Android Studio per creare il progetto esportato.
-
Devi comprimere la build per evitare il messaggio Error while merging dex archives.
(Facoltativo) Crea un prototipo e testalo con Firebase Local Emulator Suite
Prima di parlare di come la tua app scrive e legge da Cloud Firestore, presentiamo una serie di strumenti che puoi utilizzare per creare prototipi e testare la funzionalità Cloud Firestore: Firebase Local Emulator Suite. Se stai provando diversi modelli di dati, ottimizzando le regole di sicurezza o cercando il modo più conveniente per interagire con il backend, la possibilità di lavorare in locale senza eseguire il deployment di servizi live può essere un'ottima idea.
Un emulatore Cloud Firestore fa parte di Local Emulator Suite, che consente alla tua app di interagire con i contenuti e la configurazione del database emulato, nonché, facoltativamente, con le risorse del progetto emulato (funzioni, altri database e regole di sicurezza).
L'utilizzo dell'emulatore Cloud Firestore prevede pochi passaggi:
- Aggiungendo una riga di codice alla configurazione di test dell'app per connettersi all'emulatore.
- Dalla radice della directory del progetto locale, esegui
firebase emulators:start. - Effettuare chiamate dal codice prototipo dell'app utilizzando un SDK della piattaforma Cloud Firestore come di consueto.
È disponibile una procedura dettagliata che coinvolge Cloud Firestore e Cloud Functions. Dai un'occhiata anche all'introduzione a Local Emulator Suite.
Inizializza Cloud Firestore
Inizializza un'istanza di 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);
Sostituisci FIREBASE_CONFIGURATION con il
firebaseConfig della tua app web.
Per rendere persistenti i dati quando il dispositivo perde la connessione, consulta la documentazione Attivare i dati offline.
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();
Sostituisci FIREBASE_CONFIGURATION con il
firebaseConfig della tua app web.
Per rendere persistenti i dati quando il dispositivo perde la connessione, consulta la documentazione Attivare i dati offline.
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;
Aggiungi dati
Cloud Firestore archivia i dati in documenti, che vengono archiviati in raccolte. Cloud Firestore crea raccolte e documenti in modo implicito la prima volta che aggiungi dati al documento. Non è necessario creare esplicitamente raccolte o documenti.
Crea una nuova raccolta e un nuovo documento utilizzando il seguente codice di esempio.
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."); });
Ora aggiungi un altro documento alla raccolta users. Tieni presente che questo documento
include una coppia chiave-valore (secondo nome) che non è presente nel primo
documento. I documenti di una raccolta possono contenere diversi set di informazioni.
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."); });
Lettura di dati
Utilizza il visualizzatore di dati nella Console Firebase per verificare rapidamente di aver aggiunto dati a Cloud Firestore.
Puoi anche utilizzare il metodo "get" per recuperare l'intera raccolta.
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."); });
Proteggi i tuoi dati
Se utilizzi l'SDK per le piattaforme web, Android o Apple, utilizza Firebase Authentication e Cloud Firestore Security Rules per proteggere i tuoi dati in Cloud Firestore.
Ecco alcuni set di regole di base che puoi utilizzare per iniziare. Puoi modificare le regole di sicurezza nella scheda Regole della console.
Autorizzazione richiesta
// 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;
}
}
}
Modalità di produzione
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Prima di eseguire il deployment dell'app web, Android o iOS in produzione, adotta anche misure per assicurarti che solo i client della tua app possano accedere ai tuoi dati Cloud Firestore. Consulta la documentazione di App Check.
Se utilizzi uno degli SDK server, utilizza Identity and Access Management (IAM) per proteggere i tuoi dati in Cloud Firestore.
Guarda un video tutorial
Per indicazioni dettagliate su come iniziare a utilizzare le librerie client mobile Cloud Firestore, guarda uno dei seguenti tutorial video:
Web
iOS+
Android
Puoi trovare altri video sul canale YouTube di Firebase.
Passaggi successivi
Approfondisci le tue conoscenze con i seguenti argomenti:
- Codelab: scopri come utilizzare Cloud Firestore in un'app reale seguendo il codelab per Android, iOS o web.
- Modello dei dati: scopri di più su come sono strutturati i dati in Cloud Firestore, inclusi i dati gerarchici e le sottoraccolte.
- Aggiungi dati: scopri di più sulla creazione e sull'aggiornamento dei dati in Cloud Firestore.
- Recupera dati: scopri di più su come recuperare i dati.
- Eseguire query semplici e composte: scopri come eseguire query semplici e composte.
- Query di ordinamento e limitazione: scopri come ordinare e limitare i dati restituiti dalle query.