เริ่มต้นใช้งาน 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 เป็นเครื่องมือ AI ที่สร้างData Connectสคีมาจากคำอธิบายแอปในภาษาที่เป็นธรรมชาติได้ เครื่องมือนี้ช่วยให้คุณเริ่มต้นใช้งานได้อย่างรวดเร็ว โดยเฉพาะอย่างยิ่งหากคุณไม่เคยทำงานกับ ฐานข้อมูลเชิงสัมพันธ์มาก่อน
  • หรือจะเขียนสคีมาฐานข้อมูล การค้นหา และการเปลี่ยนแปลงโดยตรงโดยใช้ GraphQL ก็ได้ เริ่มต้นที่หน้าสคีมาData Connectการออกแบบ แล้วไปที่หน้าถัดไปเพื่อดูวิธีเขียนการดำเนินการ