เริ่มต้นใช้งาน Firebase SQL 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 ตัวอย่าง

ใน SQL Connect คุณจะกำหนดสคีมาและฟังก์ชันทั้งหมดของฐานข้อมูล โดยใช้ GraphQL เมื่อคุณเริ่มต้นโปรเจ็กต์ Firebase CLI จะสร้างคำจำกัดความตัวอย่างเพื่อให้คุณเริ่มต้นใช้งานได้

dataconnect/schema/schema.gql (excerpt)
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 (excerpt)
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. สร้าง JavaScript Client SDK

คำสั่งนี้ใช้คำจำกัดความ GraphQL เพื่อสร้างไลบรารี JavaScript สำหรับฐานข้อมูลของคุณโดยเฉพาะ พร้อมด้วยคำจำกัดความประเภท คุณใช้ไลบรารีนี้ ในแอปไคลเอ็นต์เพื่อดำเนินการฐานข้อมูลทั้งหมด

คุณสามารถสร้างไลบรารีสำหรับหลายแพลตฟอร์ม รวมถึง Kotlin สำหรับ Android, Swift สำหรับ iOS และ Flutter ได้โดยเพิ่มคำจำกัดความลงใน connector.yaml

npx -y firebase-tools@latest dataconnect:sdk:generate
Auto-generated React SDK (excerpt)
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

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

ลองใช้ส่วนขยาย SQL Connect VS Code

เมื่อพัฒนาด้วย SQL Connect เราขอแนะนำอย่างยิ่งให้ใช้ ส่วนขยาย SQL Connect VS Code แม้ว่าคุณจะไม่ได้ใช้ Visual Studio Code เป็นสภาพแวดล้อมการพัฒนาหลัก แต่ส่วนขยายนี้มีฟีเจอร์หลายอย่างที่ช่วยให้การพัฒนาสคีมาและการดำเนินการ สะดวกยิ่งขึ้น

  • เซิร์ฟเวอร์ภาษา GraphQL ที่ให้การตรวจสอบไวยากรณ์และคำแนะนำในการเติมข้อความอัตโนมัติที่เฉพาะเจาะจง สำหรับ SQL Connect
  • ปุ่ม CodeLens ที่สอดคล้องกับโค้ดของคุณ ซึ่งช่วยให้คุณอ่านและเขียนข้อมูลจากไฟล์คำจำกัดความสคีมา รวมถึงเรียกใช้การค้นหาและการเปลี่ยนแปลงจากคำจำกัดความฟังก์ชัน
  • ซิงค์ SDK ที่สร้างขึ้นกับคำจำกัดความ GraphQL โดยอัตโนมัติ
  • การตั้งค่าโปรแกรมจำลองในเครื่องแบบง่าย
  • การติดตั้งใช้งานในเวอร์ชันที่ใช้งานจริงแบบง่าย

ใช้โปรแกรมจำลอง SQL Connect สำหรับ การพัฒนาในเครื่อง

แม้ว่าบทแนะนำนี้จะแสดงวิธีติดตั้งใช้งานSQL Connect สคีมาและฟังก์ชันในเวอร์ชันที่ใช้งานจริงโดยตรง แต่คุณอาจไม่ต้องการ ทำการเปลี่ยนแปลงฐานข้อมูลในเวอร์ชันที่ใช้งานจริงขณะที่กำลังพัฒนา แอปอยู่ ให้ตั้งค่า SQL Connectโปรแกรมจำลอง และทำงานพัฒนาในโปรแกรมจำลองแทนที่จะใช้เวอร์ชันที่ใช้งานจริง โปรแกรมจำลอง จะตั้งค่าอินสแตนซ์ PGlite ในเครื่องที่มีลักษณะการทำงานคล้ายกับอินสแตนซ์ PostgreSQL ที่ใช้งานจริงใน Cloud SQL

ดูวิธีเขียนสคีมาและ ฟังก์ชันสำหรับแอป

เมื่อพัฒนาแอปด้วย SQL Connect การออกแบบสคีมาและฟังก์ชัน เป็นหนึ่งในงานพัฒนาแรกๆ และสำคัญที่สุดที่คุณจะต้องทำ

  • Gemini ในFirebase คอนโซล เป็นเครื่องมือ AI ที่สามารถสร้างSQL Connect สคีมา จากคำอธิบายแอปของคุณในภาษาธรรมชาติ เครื่องมือนี้ช่วยให้คุณเริ่มต้นใช้งานได้อย่างรวดเร็ว โดยเฉพาะอย่างยิ่งหากคุณไม่เคยใช้ฐานข้อมูลเชิงสัมพันธ์มาก่อน
  • หรือคุณจะเขียนสคีมา ฐานข้อมูล การค้นหา และการเปลี่ยนแปลง โดยตรงโดยใช้ GraphQL ก็ได้ เริ่มต้นด้วยคำแนะนำใน หัวข้อการออกแบบสคีมาSQL Connect, จากนั้นไปที่หน้าติดตามเพื่อดูวิธีเขียนฟังก์ชัน

ดูวิธีรับข้อมูลอัปเดตแบบเรียลไทม์จาก SQL Connect

คุณสามารถใช้ SQL Connect เพื่อเขียนแอปพลิเคชันไคลเอ็นต์ที่ตอบสนองต่อข้อมูลที่เปลี่ยนแปลงแบบเรียลไทม์ใน ดูหัวข้อรับข้อมูลอัปเดตแบบเรียลไทม์จาก SQL Connect