Начните работу с Firebase Data Connect с помощью React

В этом кратком руководстве вы создадите и развернете небольшую тестовую базу данных и получите к ней доступ из интерфейса React.

Предварительные требования

Для выполнения этого краткого руководства вам потребуется следующее:

  • Среда разработки Node.js с использованием NPM.
  • Аккаунт Google.

Учебное пособие

Учебное пособие

1. Инициализируйте свой проект.

Создайте новую директорию и инициализируйте в ней проект Firebase. При появлении запроса выберите следующие параметры:

  • Создайте новый проект Firebase.
  • Не создавайте схему с помощью Gemini (в этом руководстве вы будете использовать готовый пример схемы).
  • Создайте новый экземпляр Cloud SQL.
  • Создайте шаблон React.
mkdir myproj ; cd myproj
npx -y firebase-tools@latest login --reauth
npx -y firebase-tools@latest init dataconnect

2. Ознакомьтесь с примерами определений GraphQL.

В Data Connect вы определяете все схемы и операции базы данных с помощью GraphQL. При инициализации проекта Firebase CLI создал несколько примеров определений, чтобы помочь вам начать работу.

dataconnect/schema/schema.gql (отрывок)
type Movie @table {
  title: String!
  imageUrl: String!
  genre: String
}

type MovieMetadata @table {
  movie: Movie! @unique
  rating: Float
  releaseYear: Int
  description: String
}
dataconnect/example/queries.gql (фрагмент)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

3. Разверните свои схемы и операции.

При внесении любых изменений в схемы базы данных, запросы или мутации необходимо выполнить их развертывание, чтобы изменения вступили в силу в базе данных.

npx -y firebase-tools@latest deploy --only dataconnect

4. Заполните базу данных тестовыми данными.

Эти исходные данные послужат вам ориентиром при тестировании тестового приложения. Обратите внимание, что на этом этапе вы выполняете произвольные запросы GraphQL, что разрешено для административных задач.

npx -y firebase-tools@latest \
         dataconnect:execute dataconnect/seed_data.gql

5. Сгенерируйте клиентский SDK на JavaScript.

Эта команда использует ваши определения GraphQL для генерации библиотеки JavaScript, специально предназначенной для вашей базы данных, включая определения типов. Вы используете эту библиотеку в своем клиентском приложении для выполнения всех операций с базой данных.

Вы можете создавать библиотеки для различных платформ, включая Kotlin для Android, Swift для iOS и Flutter, добавив определения в connector.yaml .

npx -y firebase-tools@latest dataconnect:sdk:generate
Автоматически сгенерированный React SDK (фрагмент)
export interface ListMoviesData {
  movies: ({
    id: UUIDString;
    title: string;
    imageUrl: string;
    genre?: string | null;
  } & Movie_Key)[];
}

export function useListMovies(
  options?: useDataConnectQueryOptions&<ListMoviesData>
): UseDataConnectQueryResult&<ListMoviesData, undefined>;

6. Создайте веб-приложение

Выполните эти команды, чтобы добавить новое веб-приложение в ваш проект Firebase.

npx -y firebase-tools@latest \
          apps:create web react-example
npx -y firebase-tools@latest \
          apps:sdkconfig web \
          -o web-app/src/firebase-config.json
cd web-app
npm i firebase \
            @tanstack/react-query \
            @tanstack-query-firebase/react

7. Напишите пример React-клиента.

Замените содержимое файла web-app/src/App.jsx этим простым приложением React.

Обратите внимание, что приложение выполняет необходимый доступ к базе данных, используя функцию из сгенерированного SDK. Сгенерированный SDK для React использует TanStack Query для управления состоянием.

import { initializeApp } from 'firebase/app';
import firebaseConfig from './firebase-config.json';
import {
  QueryClient,
  QueryClientProvider
} from '@tanstack/react-query';

import { useListMovies } from '@dataconnect/generated/react';
import './App.css';

const app = initializeApp(firebaseConfig);
const queryClient = new QueryClient();

function App() {
  return (
    <QueryClientProvider client={queryClient}>
      <Movies />
    </QueryClientProvider>
  );
}

function Movies() {
  const { isLoading, data } = useListMovies();
  if (isLoading) {
    return <h1>...</h1>
  }
  return (
    <>
      {data?.movies.map(
        movie => <h1 key={movie.id}>{movie.title}</h1>
      )}
    </>
  );
}

export default App;

8. Попробуйте веб-приложение

Запустите сервер разработки, чтобы увидеть пример приложения в действии.

npm run dev

Следующие шаги

Попробуйте расширение Data Connect для VS Code.

При разработке с использованием Data Connect мы настоятельно рекомендуем использовать расширение Data Connect для VS Code . Даже если вы не используете Visual Studio Code в качестве основной среды разработки, расширение предоставляет ряд функций, которые делают разработку схем и операций более удобной:

  • Языковой сервер GraphQL, обеспечивающий проверку синтаксиса и подсказки автозаполнения, разработанный специально для Data Connect
  • Кнопки CodeLens, встроенные в ваш код, позволяют читать и записывать данные из файлов определения схемы, а также выполнять запросы и мутации на основе определений операций.
  • Автоматически синхронизируйте сгенерированные SDK с определениями GraphQL.
  • Упрощенная настройка локального эмулятора.
  • Упрощенное развертывание в производственной среде.

Используйте эмулятор Data Connect для локальной разработки.

Хотя в этом руководстве показано, как развертывать схемы и операции Data Connect непосредственно в продакшене, вам, вероятно, не захочется вносить изменения в базу данных продакшена во время активной разработки приложения. Вместо этого настройте эмулятор Data Connect и выполняйте разработку на его основе, а не в продакшене. Эмулятор создает локальный экземпляр PGlite, который ведет себя аналогично работающему экземпляру Postgres в CloudSQL.

Узнайте, как писать схемы и операции для вашего приложения.

При разработке приложений с использованием Data Connect проектирование схем и операций является одной из первых и наиболее важных задач разработки.

  • Gemini в консоли Firebase — это инструмент на основе искусственного интеллекта, который может генерировать схемы Data Connect на основе описания вашего приложения на естественном языке. Этот инструмент позволит вам очень быстро начать работу, особенно если вы никогда раньше не работали с реляционными базами данных.
  • В качестве альтернативы вы можете создавать схемы баз данных, запросы и мутации непосредственно с помощью GraphQL. Начните со страницы «Разработка схем Data Connect и перейдите к следующим страницам, чтобы узнать, как писать операции.