Este guia de início rápido ensina a usar o Firebase Data Connect para conectar seus apps da Web e para dispositivos móveis a um banco de dados PostgreSQL. Você vai:
- Configure o diretório do projeto Firebase Data Connect local com o VS Code e a Firebase CLI.
- Gere esquemas, consultas e mutações do Data Connect com base nas suas ideias de apps em linguagem natural.
- Use os SDKs fortemente tipados nos seus apps para executar consultas e mutações de Data Connect.
- Provisione uma instância do Cloud SQL para PostgreSQL, um esquema do Data Connect, consultas e mutações (requer um plano Blaze).
Configurar o diretório do projeto local
É possível instalar ferramentas de desenvolvimento local para Data Connect de duas maneiras.
Em um diretório de projeto, execute o seguinte comando.
O script instala a CLI do Firebase e a extensão Data Connect do VS Code, além de orientar você em
firebase init dataconnectpara configurar o projeto. Se você não tiver o VS Code para computador instalado, o script vai abrir o programa em um navegador.curl -sL https://firebase.tools/init/dataconnect | editor=true bashClique no ícone do Firebase no painel esquerdo do Visual Studio Code para abrir a tela da extensão Data Connect VS Code.
Clique em Iniciar emuladores para executar o emulador com um banco de dados PGlite local.
Esquema de revisão
O Firebase Data Connect usa GraphQL para definir seu modelo de dados. A diretiva
@table mapeia um
tipo GraphQL para uma tabela do PostgreSQL. Os campos no mapa de tipos correspondem a colunas do PostgreSQL. É possível definir relações entre tabelas usando campos que referenciam outros tipos de @table, incluindo relações de muitos para muitos usando tabelas de junção com chaves primárias compostas.
Na configuração padrão, você encontra os arquivos de esquema Data Connect no diretório dataconnect/schema/. Confira dois exemplos de tabelas do esquema de modelo de filme. Seu esquema pode ser diferente se você usou o Gemini para gerá-lo.
type Movie @table {
# Every table has an implicit primary key field that looks something like:
# id: UUID! @default(expr: "uuidV4()")
title: String!
imageUrl: String!
genre: String
}
type Review @table(key: ["movie", "user"]) {
user: User!
movie: Movie!
rating: Int
reviewText: String
reviewDate: Date! @default(expr: "request.time")
}
Saiba mais sobre os esquemas do Data Connect
Desenvolver consultas e mutações
O Firebase Data Connect usa GraphQL para consultas e mutações. Você define esses arquivos em .gql e os chama por nome no app. A sintaxe GraphQL fornece SDKs fortemente tipados e uma API flexível para buscar os dados exatos de que o app precisa.
Propagar dados no banco de dados
Com o emulador em execução, é possível inserir dados iniciais nele. Você pode usar o arquivo dataconnect/seed_data.gql fornecido ou escrever suas próprias mutações.
Use o botão Executar (local) do CodeLens no VS Code para executar as mutações e preencher seu banco de dados PGlite local.

Analisar consultas e mutações
Na configuração padrão, você encontra as consultas e mutações do Data Connect no diretório dataconnect/example/.
É possível consultar dados relacionais com precisão usando consultas aninhadas.
query ListMovies @auth(level: PUBLIC, insecureReason: "Anyone can list all movies and their reviews.") {
movies {
title imageUrl genre
reviews_on_movie {
rating reviewDate
user { username }
}
}
}
O Data Connect ajuda você a criar consultas e mutações seguras com o Firebase Auth.
Para manter a segurança do app, os apps para Web e dispositivos móveis só podem acessar
consultas e mutações do Data Connect com
diretivas @auth. Consultas e mutações podem acessar com segurança o UID do Firebase Auth
usando uma expressão como {field}_expr: "auth.uid".
mutation AddReview($movieId: UUID!, $rating: Int!, $reviewText: String!) @auth(level: USER) {
review_upsert(
data: {
userId_expr: "auth.uid"
movieId: $movieId
rating: $rating
reviewText: $reviewText
}
)
}
Saiba mais sobre consultas do Data Connect Saiba mais sobre mutações do Data Connect Saiba mais sobre a autenticação do Data Connect
Gerar consultas e mutações
Você não precisa ser um especialista em GraphQL para usar o Data Connect com eficiência. É possível gerar consultas e mutações Data Connect com base em descrições em linguagem natural.
Em qualquer arquivo .gql, digite # para iniciar um comentário e descrever uma consulta ou
mutação. Em seguida, use o botão Gerar/refinar operação do CodeLens para
gerar a operação GraphQL.

Usar o SDK gerado no seu app
O firebase init dataconnect configura automaticamente SDKs seguros para apps no seu projeto. Se necessário, adicione o SDK manualmente com o botão Adicionar SDK ao
app na extensão do VS Code ou executando firebase init
dataconnect:sdk.
Web
- Adicione o Firebase ao seu app da Web.
No arquivo principal do seu app React:
- Importe o SDK gerado:
// Update as needed with the path to your generated SDK. import { listMovies, ListMoviesData } from '@dataconnect/generated';- Instrua o app para se conectar ao emulador Data Connect:
import { connectDataConnectEmulator } from 'firebase/data-connect'; const dataConnect = getDataConnect(connectorConfig); connectDataConnectEmulator(dataConnect, 'localhost', 9399);- Chamar métodos Data Connect.
function App() { const [movies, setMovies] = useState<ListMoviesData['movies']>([]); useEffect(() => { listMovies.then(res => setMovies(res.data)); }, []); return ( movies.map(movie => <h1>{movie.title}</h1>); ); } const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<App />);
Swift
- Adicione o Firebase ao seu app iOS.
Para usar o SDK gerado, configure-o como uma dependência no Xcode.
Na barra de navegação superior do Xcode, selecione Arquivo > Adicionar dependências de pacote > Adicionar local e escolha a pasta que contém o
Package.swiftgerado.No delegado principal do app:
Importe o SDK do Data Connect e o SDK gerado:
import FirebaseDataConnect // Generated queries. // Update as needed with the package name of your generated SDK. import <CONNECTOR-PACKAGE-NAME> let connector = DataConnect.moviesConnectorInstrua o app para se conectar ao emulador Data Connect:
// Connect to the emulator on "127.0.0.1:9399" connector.useEmulator() // (alternatively) if you're running your emulator on non-default port: // connector.useEmulator(port: 9999)Chame os métodos Data Connect:
struct ListMovieView: View { @StateObject private var queryRef = connector.listMovies.ref() var body: some View { VStack { Button { Task { do { try await refresh() } catch { print("Failed to refresh: \(error)") } } } label: { Text("Refresh") } // use the query results in a view ForEach(queryRef.data?.movies ?? []) { movie in Text(movie.title) } } } } @MainActor func refresh() async throws { _ = try await queryRef.execute() } struct ContentView_Previews: PreviewProvider { static var previews: some View { ListMovieView() } }
Kotlin Android
- Adicione o Firebase ao seu app Android.
Para usar o SDK gerado, configure Data Connect como uma dependência no Gradle.
Atualize
pluginsedependenciesno seuapp/build.gradle.kts.plugins { // Use whichever versions of these dependencies suit your application. // The versions shown here were the latest as of March 14, 2025. // Note, however, that the version of kotlin("plugin.serialization") must, // in general, match the version of kotlin("android"). id("com.android.application") version "8.9.0" id("com.google.gms.google-services") version "4.4.2" val kotlinVersion = "2.1.10" kotlin("android") version kotlinVersion kotlin("plugin.serialization") version kotlinVersion } dependencies { // Use whichever versions of these dependencies suit your application. // The versions shown here were the latest versions as of March 14, 2025. implementation("com.google.firebase:firebase-dataconnect:16.0.0-beta04") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1") implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3") // These dependencies are not strictly required, but will very likely be used // when writing modern Android applications. implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0") implementation("androidx.appcompat:appcompat:1.7.0") implementation("androidx.activity:activity-ktx:1.10.1") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7") implementation("com.google.android.material:material:1.12.0") }Na atividade principal do app:
- Receba uma instância de conector do SDK gerado:
private val connector = com.myapplication.MoviesConnector.instance- Instrua o app para se conectar ao emulador Data Connect:
private val connector = com.myapplication.MoviesConnector.instance .apply { // Connect to the emulator on "10.0.2.2:9399" (default port) dataConnect.useEmulator() // (alternatively) if you're running your emulator on non-default port: // dataConnect.useEmulator(port = 9999) }- Chamar métodos Data Connect.
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val textView: TextView = findViewById(R.id.text_view) lifecycleScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { val result = connector.listMovies.runCatching { execute { } } val newTextViewText = result.fold( onSuccess = { val titles = it.data.movies.map { it.title } "${titles.size} movies: " + titles.joinToString(", ") }, onFailure = { "ERROR: ${it.message}" } ) textView.text = newTextViewText } } } }
Flutter
- Adicione o Firebase ao seu app Flutter.
- Instale a CLI do flutterfire
dart pub global activate flutterfire_cli. - Execute
flutterfire configure. Na função principal do app:
- Importe o SDK gerado:
// Generated queries. // Update as needed with the path to your generated SDK import 'movies_connector/movies.dart';- Instrua o app para se conectar ao emulador Data Connect:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); MoviesConnector.instance.dataConnect .useDataConnectEmulator(Uri.base.host, 443, isSecure: true); runApp(const MyApp()); }- Chamar métodos Data Connect.
class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Column(children: [ ConstrainedBox( constraints: const BoxConstraints(maxHeight: 200), child: FutureBuilder( future: MoviesConnector.instance.listMovies().execute(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { return ListView.builder( scrollDirection: Axis.vertical, itemBuilder: (context, index) => Card( child: Text( snapshot.data!.data.movies[index].title, )), itemCount: snapshot.data!.data.movies.length, ); } return const CircularProgressIndicator(); }), ) ]))); } }
Implantar para a produção
Para implantar seu esquema, consultas e mutações na produção:
Faça upgrade do projeto do Firebase para usar o plano Blaze.
Clique no botão Implantar em produção na extensão Data Connect do VS Code ou execute em um terminal:
firebase deploy --only dataconnectDepois da implantação, acesse o console Firebase para conferir seu esquema e executar consultas e mutações.
Saiba mais sobre dataconnect.yaml Saiba mais sobre como o Data Connect funciona com o Cloud SQL
Próximas etapas
Agora que você concluiu o guia de início rápido, confira algumas próximas etapas:
- Confira um repositório de apps de início rápido e crie um app Data Connect completo seguindo nosso codelab para Web, codelab para iOS ou codelab para Android.
- Adicione dados ao banco de dados, inspecione os esquemas e monitore o serviço do Data Connect no console do Firebase.
- Configure o servidor MCP do Firebase com ferramentas de desenvolvimento com tecnologia de IA, como o Gemini Code Assist.
- Saiba mais sobre o desenvolvimento de esquemas, consultas e mutações.
- Saiba mais sobre como o Data Connect gerencia o esquema do PostgreSQL.
- Saiba mais sobre os SDKs de cliente para Web, Android, iOS e Flutter, além dos SDKs Admin para Node.js.