Veja neste guia de início rápido como configurar o Cloud Firestore, adicionar dados e ver os dados adicionados no Firebase console.
Criar um banco de dados do Cloud Firestore
Crie um projeto do Firebase se você ainda não fez isso: no Console do Firebase, clique em Adicionar projeto e siga as instruções exibidas na tela para criar um projeto ou adicionar serviços do Firebase a um projeto do GCP.
Navegue até a seção Cloud Firestore do Console do Firebase. Aparecerá uma solicitação para selecionar um projeto atual do Firebase. Siga o fluxo de trabalho de criação do banco de dados.
Selecione um modo inicial para as regras de segurança do Cloud Firestore:
- Modo de teste
Embora esse modo seja ideal para começar a usar as bibliotecas de cliente em dispositivos móveis e na Web, ele permite que qualquer pessoa leia e substitua os dados. Depois do teste, revise a seção Proteger seus dados.
Selecione o modo de teste para começar a usar as plataformas Apple, da Web ou o SDK do Android.
- Modo bloqueado
Nega todas as leituras e gravações de clientes de dispositivos móveis e Web. Seus servidores de aplicativos autenticados (C#, Go, Java, Node.js, PHP, Python ou Ruby) ainda podem acessar o banco de dados.
Selecione o modo bloqueado para começar a usar a biblioteca de cliente do servidor para C#, Go, Java, Node.js, PHP, Python ou Ruby.
O conjunto inicial de regras de segurança do Cloud Firestore será aplicado ao banco de dados padrão do Cloud Firestore. Se você criar vários bancos de dados para seu projeto, poderá implantar as regras de segurança do Cloud Firestore para cada um deles.
Selecione um local para seu banco de dados.
Essa configuração de localização é o local padrão dos recursos do Google Cloud Platform (GCP) no seu projeto. Esse local será usado para serviços do GCP no projeto que exigem uma configuração de localização, especificamente o bucket padrão do Cloud Storage e o aplicativo do App Engine que é obrigatório se você usa o Cloud Scheduler.
Se você não conseguir selecionar um local, isso significa que seu projeto já tem um local padrão dos recursos do GCP. Ele foi definido durante a criação do projeto ou na configuração de outro serviço que exigia uma configuração de localização.
Clique em Concluído.
Quando você ativa o Cloud Firestore, ele também ativa a API no Cloud API Manager.
Configurar o ambiente de desenvolvimento
Adicione as dependências e as bibliotecas de cliente necessárias ao app.
Web
- Siga as instruções para adicionar o Firebase ao seu app da Web.
- Adicione as bibliotecas do Firebase e do Cloud Firestore ao seu app:
<script src="https://www.gstatic.com/firebasejs/10.12.4/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/10.12.4/firebase-firestore-compat.js"></script>
O SDK do Cloud Firestore também está disponível como um pacote npm.npm install firebase@10.12.4 --save
Você precisará requisitar manualmente o Firebase e o Cloud Firestore.import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
Web
- Siga as instruções para adicionar o Firebase ao seu app da Web.
-
O SDK do Cloud Firestore também está disponível como um pacote npm.
npm install firebase@10.12.4 --save
Você precisará importar o Firebase e o Cloud Firestore.import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
Siga as instruções para adicionar o Firebase ao app da Apple.
Use o Swift Package Manager para instalar e gerenciar as dependências do Firebase.
- Com seu projeto do app aberto no Xcode, acesse File > Swift Packages > Add Package Dependency.
- Quando solicitado, adicione o repositório do SDK do Firebase para as plataformas Apple:
- Escolha a biblioteca do Firestore.
- Quando terminar, o Xcode vai começar a resolver e fazer o download das dependências em segundo plano automaticamente.
https://github.com/firebase/firebase-ios-sdk
Android
- Siga as instruções para adicionar o Firebase ao seu app Android.
- Ao usar aa
BoM do Firebase para Android,
declare a dependência da biblioteca do Cloud Firestore para Android no
Arquivo Gradle do módulo (nível do app)
(geralmente
app/build.gradle.kts
ouapp/build.gradle
).dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.1.2")) // 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") }
Usando a BoM do Firebase para Android, seu app sempre usará versões compatíveis das bibliotecas do Firebase para Android.
(Alternativa) Declare as dependências das bibliotecas do Firebase sem usar a BoM.
Se você preferir não usar a BoM do Firebase, especifique a versão de cada biblioteca do Firebase na linha de dependência correspondente.
Caso você use várias bibliotecas do Firebase no seu app, recomendamos usar a BoM para gerenciar as versões delas e garantir a compatibilidade de todas..
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.0.0") }
Está procurando um módulo de biblioteca específico do Kotlin? A partir da versão de outubro de 2023, os desenvolvedores Kotlin e Java podem depender do módulo da biblioteca principal. Para mais detalhes, consulte as Perguntas frequentes sobre isso iniciativa).
Dart
- Configure e inicialize o Firebase no seu app criado com o Flutter, caso ainda não tenha feito isso.
- Na raiz do seu projeto do Flutter, execute o seguinte comando para instalar o plug-in:
flutter pub add cloud_firestore
- Após a conclusão, recrie seu aplicativo do Flutter:
flutter run
- Opcional: otimize os tempos de compilação do iOS e do macOS incluindo
o framework pré-compilado.
Atualmente, o SDK do Firestore para iOS depende de um código que pode levar até cinco minutos para ser compilado no Xcode. Para reduzir bastante os tempos de compilação, use uma versão pré-compilada adicionando esta linha ao bloco
target 'Runner' do
no seu 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
Substitua IOS_SDK_VERSION pela versão do SDK do Firebase para iOS especificada no arquivo
firebase_sdk_version.rb
defirebase_core
. Se você não estiver usando a versão mais recente defirebase_core
, procure esse arquivo no cache de pacotes do Pub local (geralmente~/.pub-cache
).Além disso, verifique se você fez upgrade do CocoaPods para a versão 1.9.1 ou posterior:
gem install cocoapods
Para saber mais, confira o problema no GitHub (em inglês).
Java
- Adicione o SDK Admin do Firebase ao seu app:
-
Com o Gradle:
compile 'com.google.firebase:firebase-admin:1.32.0'
-
Com o Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>1.32.0</version> </dependency>
-
Com o Gradle:
- Siga as instruções abaixo para inicializar o Cloud Firestore com as credenciais adequadas no seu ambiente.
Python
- Adicione o SDK Admin do Firebase ao seu app para Python:
pip install --upgrade firebase-admin
- Siga as instruções abaixo para inicializar o Cloud Firestore com as credenciais adequadas no seu ambiente.
C++
- Siga as instruções para adicionar o Firebase ao seu projeto do C++.
- Interface C ++ para Android.
- Dependências do Gradle. Adicione o seguinte ao seu arquivo Gradle do módulo
(nível do aplicativo), geralmente
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 }
- Dependências binárias. Da mesma forma, a maneira recomendada de receber
as dependências binárias é adicionar o seguinte ao arquivo
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}")
- Para configurar a integração de área de trabalho, consulte Adicionar o Firebase ao seu projeto em C ++.
Unity
- Siga as instruções para adicionar o Firebase ao seu projeto do Unity.
- Use a interface do Unity para configurar seu projeto para reduzir versões do Android.
- A opção pode ser encontrada em Player Settings > Android > Publishing Settings > Minify.
- As opções podem variar em diferentes versões do Unity. Por isso, consulte a documentação oficial do Unity e o guia de depuração da versão do Unity do Firebase.
-
Se, depois de ativar a minificação, o número de métodos referenciados ainda
exceder o limite, outra opção será ativar
multidex
em:-
mainTemplate.gradle
se o Modelo personalizado do Gradle em Configurações do player estiver ativado -
ou o arquivo
build.gradle
do módulo, se você usar o Android Studio para criar o projeto exportado.
-
Você precisa reduzir o build para evitar a mensagem Error while merging dex archives
.
Node.js
-
Adicione o SDK Admin do Firebase ao seu app:
npm install firebase-admin --save
- Siga as instruções abaixo para inicializar o Cloud Firestore com as credenciais adequadas no seu ambiente.
Go
- Adicione o SDK Admin do Firebase ao seu app para Go:
go get firebase.google.com/go
- Siga as instruções abaixo para inicializar o Cloud Firestore com as credenciais adequadas no seu ambiente.
PHP
-
As bibliotecas de cliente do servidor do Cloud Firestore (Java, Node.js, Python, Go, PHP, C# e Ruby) usam o
Application Default Credentials do Google
para realizar a autenticação.
-
Para autenticar usando seu ambiente de desenvolvimento, defina a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
para indicar um arquivo de chave de conta do serviço JSON. É possível criar um arquivo de chave na página Credenciais, do Console de APIs.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- No seu ambiente de produção, não é necessário fazer a autenticação quando o aplicativo é executado no App Engine ou no Compute Engine usando o mesmo projeto utilizado para o Cloud Firestore. Caso contrário, configure uma conta de serviço.
-
Para autenticar usando seu ambiente de desenvolvimento, defina a variável de ambiente
- Instale e ative a extensão gRPC para PHP, necessária para usar a biblioteca de cliente.
-
Adicione a biblioteca PHP do Cloud Firestore ao aplicativo:
composer require google/cloud-firestore
C#
-
As bibliotecas de cliente do servidor do Cloud Firestore (Java, Node.js, Python, Go, PHP, C# e Ruby) usam o
Application Default Credentials do Google
para realizar a autenticação.
-
Para autenticar usando seu ambiente de desenvolvimento, defina a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
para indicar um arquivo de chave de conta do serviço JSON. É possível criar um arquivo de chave na página Credenciais, do Console de APIs.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- No seu ambiente de produção, não é necessário fazer a autenticação quando o aplicativo é executado no App Engine ou no Compute Engine usando o mesmo projeto utilizado para o Cloud Firestore. Caso contrário, configure uma conta de serviço.
-
Para autenticar usando seu ambiente de desenvolvimento, defina a variável de ambiente
-
Adicione a biblioteca C# do Cloud Firestore ao arquivo
.csproj
:<ItemGroup> <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" /> </ItemGroup>
-
Adicione a instrução a seguir ao seu arquivo
Program.cs
:using Google.Cloud.Firestore;
Ruby
-
As bibliotecas de cliente do servidor do Cloud Firestore (Java, Node.js, Python, Go, PHP, C# e Ruby) usam o
Application Default Credentials do Google
para realizar a autenticação.
-
Para autenticar usando seu ambiente de desenvolvimento, defina a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
para indicar um arquivo de chave de conta do serviço JSON. É possível criar um arquivo de chave na página Credenciais, do Console de APIs.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- No seu ambiente de produção, não é necessário fazer a autenticação quando o aplicativo é executado no App Engine ou no Compute Engine usando o mesmo projeto utilizado para o Cloud Firestore. Caso contrário, configure uma conta de serviço.
-
Para autenticar usando seu ambiente de desenvolvimento, defina a variável de ambiente
-
Adicione a biblioteca Ruby do Cloud Firestore ao aplicativo no
Gemfile
:gem "google-cloud-firestore"
-
Instale as dependências do seu
Gemfile
usando:bundle install
Criar protótipos e fazer testes com o Pacote de emuladores locais do Firebase (opcional)
Para desenvolvedores de dispositivos móveis, antes de falar sobre como o app grava e lê usando o Cloud Firestore, vamos apresentar um conjunto de ferramentas que podem ser usadas para prototipar e testar a funcionalidade do Cloud Firestore: o Pacote de emuladores locais do Firebase. Conseguir trabalhar localmente sem precisar implantar serviços existentes será uma ótima ideia se você estiver testando diferentes modelos de dados, otimizando suas regras de segurança ou procurando a maneira mais econômica de interagir com o back-end.
Um emulador do Cloud Firestore faz parte do Pacote de emuladores locais, que permite ao seu app interagir com o conteúdo e a configuração do banco de dados emulado. Além disso, ele também permite interagir com os recursos do projeto emulado (opcional), como funções, outros bancos de dados e regras de segurança.
O uso do emulador do Cloud Firestore envolve apenas algumas etapas:
- Para se conectar ao emulador, adicione uma linha de código à configuração de teste do app.
- Execute
firebase emulators:start
na raiz do diretório do projeto local. - Faça chamadas pelo código de protótipo do seu app usando o SDK da plataforma do Cloud Firestore normalmente.
Disponibilizamos um tutorial detalhado envolvendo o Cloud Firestore e o Cloud Functions. Consulte também a Introdução ao Pacote de emuladores locais.
Inicializar o Cloud Firestore
Inicialize uma instância do 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);
Substitua FIREBASE_CONFIGURATION pelo
firebaseConfig
do seu app da Web.
Para manter os dados se o dispositivo perder a conexão, consulte a documentação Ativar dados off-line.
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();
Substitua FIREBASE_CONFIGURATION pelo
firebaseConfig
do seu app da Web.
Para manter os dados se o dispositivo perder a conexão, consulte a documentação Ativar dados off-line.
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+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;
Java
O Cloud Firestore SDK é inicializado de diferentes maneiras, dependendo do seu ambiente. Veja abaixo os métodos mais comuns. Para uma referência completa, consulte Inicializar o SDK Admin.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();
Para usar o SDK Admin do Firebase no seu próprio servidor, use uma conta de serviço.
Acesse IAM e administrador > Contas de serviço no console do Google Cloud. Gere uma nova chave privada e salve o arquivo JSON. Em seguida, use o arquivo para inicializar o 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();
Python
O Cloud Firestore SDK é inicializado de diferentes maneiras, dependendo do seu ambiente. Veja abaixo os métodos mais comuns. Para uma referência completa, consulte Inicializar o SDK Admin.import firebase_admin from firebase_admin import firestore # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore.client()
Uma credencial padrão do aplicativo também pode ser usada para inicializar o 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()
Para usar o SDK Admin do Firebase no seu próprio servidor, use uma conta de serviço.
Acesse IAM e administrador > Contas de serviço no console do Google Cloud. Gere uma nova chave privada e salve o arquivo JSON. Em seguida, use o arquivo para inicializar o 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
O Cloud Firestore SDK é inicializado de diferentes maneiras, dependendo do seu ambiente. Veja abaixo os métodos mais comuns. Para uma referência completa, consulte Inicializar o SDK Admin.import firebase_admin from firebase_admin import firestore_async # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore_async.client()
Uma credencial padrão do aplicativo também pode ser usada para inicializar o 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()
Para usar o SDK Admin do Firebase no seu próprio servidor, use uma conta de serviço.
Acesse IAM e administrador > Contas de serviço no console do Google Cloud. Gere uma nova chave privada e salve o arquivo JSON. Em seguida, use o arquivo para inicializar o 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()
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
Node.js
O Cloud Firestore SDK é inicializado de diferentes maneiras, dependendo do seu ambiente. Veja abaixo os métodos mais comuns. Para uma referência completa, consulte Inicializar o SDK Admin.-
Inicializar no Cloud Functions
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
-
Inicializar no 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();
-
Inicializar no seu próprio servidor
Para usar o SDK Admin do Firebase no seu próprio servidor, ou em qualquer outro ambiente com Node.js, use uma conta de serviço. Acesse IAM e administrador > Contas de serviço no console do Google Cloud. Gere uma nova chave privada e salve o arquivo JSON. Em seguida, use o arquivo para inicializar o 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();
Go
O Cloud Firestore SDK é inicializado de diferentes maneiras, dependendo do seu ambiente. Veja abaixo os métodos mais comuns. Para uma referência completa, consulte Inicializar o SDK Admin.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()
Para usar o SDK Admin do Firebase no seu próprio servidor, use uma conta de serviço.
Acesse IAM e administrador > Contas de serviço no console do Google Cloud. Gere uma nova chave privada e salve o arquivo JSON. Em seguida, use o arquivo para inicializar o 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
Para mais informações sobre como instalar e criar um cliente do Cloud Firestore, consulte Bibliotecas de cliente do Cloud Firestore.
Unity
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
C#
C#
Para mais informações sobre como instalar e criar um cliente do Cloud Firestore, consulte Bibliotecas de cliente do Cloud Firestore.
Ruby
Adicionar dados
O Cloud Firestore armazena dados nos Documentos que são armazenados nas Coleções. O Cloud Firestore cria coleções e documentos de modo implícito na primeira vez que você adiciona dados ao documento. Não é necessário criar coleções ou documentos explicitamente.
Crie uma nova coleção e um documento usando o código de exemplo a seguir.
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+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}'));
Java
Python
Python
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; } });
Node.js
Go
PHP
PHP
Para mais informações sobre como instalar e criar um cliente do Cloud Firestore, consulte Bibliotecas de cliente do Cloud Firestore.
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."); });
C#
Ruby
Agora, adicione outro documento à coleção users
. Observe que esse documento inclui um par de valores-chave (nome do meio) que não aparece no primeiro documento. Os documentos em uma coleção podem conter diferentes conjuntos de informações.
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+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}'));
Java
Python
Python
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; } });
Node.js
Go
PHP
PHP
Para mais informações sobre como instalar e criar um cliente do Cloud Firestore, consulte Bibliotecas de cliente do Cloud Firestore.
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."); });
C#
Ruby
Ler dados
Use o visualizador de dados no Console do Firebase para verificar rapidamente se você adicionou dados ao Cloud Firestore.
É possível usar o método "get" para recuperar toda a coleção.
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+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()}"); } });
Java
Python
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Python
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; } });
Node.js
Go
PHP
PHP
Para mais informações sobre como instalar e criar um cliente do Cloud Firestore, consulte Bibliotecas de cliente do Cloud Firestore.
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."); });
C#
Ruby
Proteger os dados
Se você estiver usando o SDK para Web, Android ou plataformas Apple, utilize o Firebase Authentication e as Regras de segurança do Cloud Firestore para proteger os dados no Cloud Firestore.
Veja a seguir alguns conjuntos de regras básicas que podem ser usadas para começar. É possível modificar as regras de segurança na guia Regras do console.
Autenticação obrigatória
// 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;
}
}
}
Modo bloqueado
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Antes de implantar o app da Web, Android ou iOS para produção, tome algumas medidas para garantir que somente os clientes do app possam acessar os dados do Cloud Firestore. Consulte a documentação do App Check.
Se você estiver usando um dos SDKs do servidor, utilize o Identity and Access Management (IAM) para proteger os dados no Cloud Firestore.
Assistir a um tutorial em vídeo
Para orientações detalhadas sobre como começar com as bibliotecas de cliente móveis do Cloud Firestore, assista a um dos seguintes tutoriais em vídeo:
Web
iOS+
Android
Assista a mais vídeos no canal do Firebase no YouTube.
Próximas etapas
Aprofunde seu conhecimento com os seguintes tópicos:
- Codelabs: aprenda a usar o Cloud Firestore em um app real seguindo o codelab para Android, iOS ou Web.
- Modelo de dados: saiba como os dados são estruturados no Cloud Firestore, incluindo dados hierárquicos e subcoleções.
- Adicionar dados: saiba mais sobre como criar e atualizar dados no Cloud Firestore.
- Recuperar dados: saiba mais sobre como recuperar dados.
- Executar consultas simples e compostas: saiba como executar consultas simples e compostas.
- Consultas de pedidos e limites:saiba como ordenar e limitar os dados retornados por suas consultas.