เริ่มต้นใช้งาน Firebase Data Connect โดยใช้ React

ในการเริ่มต้นอย่างรวดเร็วนี้ คุณจะได้สร้างและติดตั้งใช้งานฐานข้อมูลตัวอย่างขนาดเล็ก รวมถึงเข้าถึงฐานข้อมูลดังกล่าวจาก ส่วนหน้าของ React

ข้อกำหนดเบื้องต้น

คุณจะต้องมีสิ่งต่อไปนี้เพื่อทําการเริ่มต้นอย่างรวดเร็วนี้ให้เสร็จสมบูรณ์

  • สภาพแวดล้อม Node.js ที่มี NPM
  • บัญชี Google

บทแนะนำ

บทแนะนำ

1. สร้างโปรเจ็กต์ Firebase ใหม่

เริ่มต้นด้วยการสร้างโปรเจ็กต์ Firebase ใหม่ในคอนโซล Firebase จากนั้นอัปเกรด โปรเจ็กต์เป็นแพ็กเกจ Blaze

2. เริ่มต้นโปรเจ็กต์

สร้างไดเรกทอรีใหม่และเริ่มต้นโปรเจ็กต์ Firebase ในไดเรกทอรีนั้น เมื่อได้รับแจ้ง ให้เลือกตัวเลือกต่อไปนี้

  • เลือกโปรเจ็กต์ที่คุณสร้างในขั้นตอนก่อนหน้า
  • อย่าสร้างสคีมาด้วย Gemini (ในบทแนะนำนี้ คุณจะใช้สคีมาตัวอย่างที่สร้างไว้ล่วงหน้า )
  • สร้างอินสแตนซ์ Cloud SQL ใหม่
  • สร้างเทมเพลต React
npx -y firebase-tools@latest login --reauth
npx -y firebase-tools@latest init dataconnect

3. ตรวจสอบตัวอย่างคำจำกัดความ 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
  }
}

4. ปรับใช้โครงร่างและการดำเนินการของคุณ

เมื่อใดก็ตามที่คุณทำการเปลี่ยนแปลงสคีมา ฐานข้อมูล การค้นหา หรือการเปลี่ยนแปลง คุณจะต้อง นําไปใช้เพื่อให้การเปลี่ยนแปลงมีผลกับฐานข้อมูล

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

5. เพาะฐานข้อมูลด้วยข้อมูลตัวอย่าง

ข้อมูลเริ่มต้นนี้จะช่วยให้คุณมีข้อมูลที่จะดูเมื่อทดสอบแอปตัวอย่าง โปรดทราบว่าในขั้นตอนนี้ คุณกำลังเรียกใช้ GraphQL ที่กำหนดเอง ซึ่งอนุญาตให้ใช้สำหรับงานด้านการดูแลระบบ

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

6. สร้าง 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>;

7. ตั้งค่าเว็บแอป

เรียกใช้คำสั่งต่อไปนี้เพื่อเพิ่มเว็บแอปใหม่ลงในโปรเจ็กต์ 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 ; cd ..

8. เขียนไคลเอ็นต์ 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;

9. ลองใช้เว็บแอป

เริ่มต้นเซิร์ฟเวอร์การพัฒนาเพื่อดูตัวอย่างการใช้งานแอป

npm run dev

ขั้นตอนถัดไป

ลองใช้ส่วนขยาย Visual Studio Code

เมื่อพัฒนาด้วย Data Connect เราขอแนะนำให้ใช้ส่วนขยาย Visual Studio 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 การออกแบบ แล้วไปที่หน้าติดตามผลเพื่อดูวิธีเขียนการดำเนินการ