搜尋

數位靈魂的存放處:Vibe Coding 串接 Firebase Firestore

在 Vibe Coding 的過程中,雖然可以透過對話快速產出功能,但如果要讓作品具備「靈魂」與「記憶」,就必須得使用雲端資料庫,Firebase Firestore 作為 Google 提供的強大 NoSQL 資料庫,可以讓 AI 輕鬆串接並實現即時資料同步,這篇教學會從零開始介紹 Firestore,並逐步導入 Vibe Coding 的開發流程。

更多參考:Vibe Coding 全方位開發導讀

快速導覽:

數位靈魂的存放處:Vibe Coding 串接 Firebase Firestore

認識 Firebase Firestore

Firebase Firestore ( Cloud Firestore ) 是 Google 推出的彈性 NoSQL 雲端資料庫,專門針對行動裝置與網頁開發而設計,對於 Vibe Coding 開發者而言,Firestore 具備以下優點:

  • 即時同步:資料一旦更新,所有連線的裝置會立刻收到通知,不需要重新整理網頁。
  • 彈性架構:不需要像傳統資料庫一樣先定義複雜的資料表,隨時可以新增或修改資料欄位。
  • 離線支援:內建離線快取功能,即便在網路不穩的情況下,應用程式依然能正常運作。

Firebase 提供相當實惠的免費額度 ( Spark 計畫 ),如果超過免費額度,Firebase 將暫停服務直到隔日重新計算,或切換至「付費(Blaze)」計畫。對於初學者而言,免費額度通常非常充足,非常適合個人專案或原型開發,下方列出免費方案和付費方案的差異:

注意,如果專案需要使用 Cloud Functions 連接到外部 API ( 例如 OpenAI API ),則必須將專案升級為 Blaze 計畫,參考「Firebase Pricing plans

功能項目 Spark ( 免費版 ) Blaze ( 付費版/隨用隨付 )
計費方式 $0 月 按量計費
Firestore 讀取 50,000 次 / 日 超過免費額度後計費
Firestore 寫入 20,000 次 / 日 超過免費額度後計費
Firestore 刪除 20,000 次 / 日 超過免費額度後計費
Firestore 儲存空間 1 GiB 總量 $0.18 / GiB / 月
Cloud Storage 儲存 5 GiB 總量 $0.026 / GiB / 月
Cloud Functions 不支援外部請求 支援外部網路請求 ( 有免費額度 )
Hosting 傳輸量 360 MiB / 日 $0.15 / GiB
Authentication 50,000 MAU 視身分驗證類型而定

數位靈魂的存放處:Vibe Coding 串接 Firebase Firestore - 認識 Firebase Firestore

終極對決:Firestore 與 Realtime Database 的權衡之道

在先前的教學「Vibe Coding 遇上 Firebase Realtime Database」 中,深入探討和實作 Firebase Realtime Database 的應用,但隨著專案複雜度提升,可能就得逐步導入 Firebase Firestore。以下列出這兩款 Firebase 核心資料庫的差異,幫助開發者在不同的開發情境中做出最適當的判斷。

參考:Vibe Coding 遇上 Firebase Realtime Database

功能 Firestore Realtime Database
資料模型 「集合」與「文件」為主 ( 類 JSON ) 單一巨大的 JSON 樹狀結構為主
查詢能力 強大,可進行複雜的多欄位篩選 較弱,僅支援簡單的查詢
擴展性 自動橫向擴展,適合大型專案 手動擴展,適合小型專案
離線支援 支援離線查詢,同步效率極高 僅支援基礎離線緩存,無法在離線時執行進階查詢

數位靈魂的存放處:Vibe Coding 串接 Firebase Firestore - 終極對決:Firestore 與 Realtime Database 的權衡之道

開始使用 Firebase Firestore

使用自己的 Google 帳號登入 Firebase Console ( Firebase 專案控制台 ),點擊「請設定 Firebase 專案」的按鈕,開始建立專案。

前往:Firebase Console

Vibe Coding 開始使用 Firebase Firestore - 使用自己的 Google 帳號登入 Firebase Console ( Firebase 專案控制台 ),點擊「請設定 Firebase 專案」的按鈕,開始建立專案

如果已經有專案,也可以點擊「建立新的 Firebase 專案」開始建立專案。

Vibe Coding 開始使用 Firebase Firestore - 如果已經有專案,也可以點擊「建立新的 Firebase 專案」開始建立專案

輸入專案名稱,按下「繼續」。

Vibe Coding 開始使用 Firebase Firestore - 輸入專案名稱,按下「繼續」

根據個人需求決定是否啟用 Gemini 輔助功能以及串連 Google Analytics 分析功能 ( 可以都不用勾選 ),完成後點擊「建立專案」。

Vibe Coding 開始使用 Firebase Firestore - 根據個人需求決定是否啟用 Gemini 輔助功能以及串連 Google Analytics 分析功能 ( 可以都不用勾選 ),完成後點擊「建立專案」

專案建立後,就可以看到類似下圖的專案畫面。

Vibe Coding 開始使用 Firebase Firestore - 專案建立後,就可以看到類似下圖的專案畫面

專案建立後,從左側選單選擇「建構 > Firestore database」。

Vibe Coding 開始使用 Firebase Firestore - 專案建立後,從左側選單選擇「建構 > Firestore database」

點擊「建立資料庫」。

Vibe Coding 開始使用 Firebase Firestore - 點擊「建立資料庫」

如果是個人帳號就選擇「standard 版本」,並將位置設定在「Taiwan」( 速度可能比較快 )。

Vibe Coding 開始使用 Firebase Firestore - 如果是個人帳號就選擇「standard 版本」,並將位置設定在「Taiwan」( 速度可能比較快 )

接著不需要選擇模式 ( 因為待會在安全性就會覆寫這些預設規則 ),直接點擊「建立」就會建立資料庫。

Vibe Coding 開始使用 Firebase Firestore - 接著不需要選擇模式 ( 因為待會在安全性就會覆寫這些預設規則 ),直接點擊「建立」就會建立資料庫

資料庫建立完成後,就會看到下方的資料庫畫面。

Vibe Coding 開始使用 Firebase Firestore - 資料庫建立完成後,就會看到下方的資料庫畫面

Firestore 儲存的資料結構

建立資料庫之後就要來認識 Firestore 是怎麼儲存資料,有別於 Realtime Database 是使用 json 節點的形式,Firestore 採用「集合與文件」的方式儲存資料,下方是 Firebase Firestore 儲存的資料結構。

  • 集合 ( Collection ):類似「資料夾」,存放相同類型的內容。
  • 文件 ( Document ):存放於集合中,是資料的最小單位 ( JSON 格式 )。
  • 欄位 ( Field ):文件內的具體內容,例如:name: "Oxxo", age: 18,裡面還可以額外添加不同集合和文件。

根據結構,Firestore 畫面中會把這些結構水平展開區分,以下方的圖片為例,集合是「Fruits」,Fruits 集合裡面有「Apple」的文件,Apple 裡面有「價格 Price」和「數量 number」

Vibe Coding Firestore 儲存的資料結構 - 根據結構,Firestore 畫面中會把這些結構水平展開區分,以下方的圖片為例,集合是「Fruits」,Fruits 集合裡面有「Apple」的文件,Apple 裡面有「價格 Price」和「數量 number」

透過這種結構方式,可以很輕鬆地將資料分門別類,例如下圖建立了四個集合,每個集合裡面又有自己的文件和欄位。

Vibe Coding Firestore 儲存的資料結構 - 透過這種結構方式,可以很輕鬆地將資料分門別類,例如下圖建立了兩個集合,每個集合裡面又有自己的文件和欄位

Firebase Firestore 安全規則設定

在操作 Firestore 的過程中,安全性規則 ( Security Rules ) 是保護資料不被非法竄改的重要防線。這套規則允許開發者以精確的邏輯定義誰在什麼情況下可以「讀取」或「寫入」資料,進入 Firestore 之後,點擊「規則」頁籤,在下方區域就可以撰寫安全性規則。

詳細安全性規則參考:Firebase Security Rules

Vibe Coding Firebase Firestore 安全規則設定 - 進入 Firestore 之後,點擊「規則」頁籤,在下方區域就可以撰寫安全性規則

雖然在 Vibe Coding 時代,不太需要去記憶安全性規則的寫法,但如果能在 Vibe Coding 的過程中,稍微強調資料或文件的名稱或一些專有名詞,就能讓 AI 更準確的寫出更好的安全性規則,也更能理解 AI 到底寫了些什麼規則,下方簡單列出這些寫法:

  • 萬用字元:大括號 { } 包裹的名稱稱為「萬用字元」,作用是擷取該路徑片段的值,並將其存入一個變數中,以便在後方的條件式中使用。
  • 變數名稱:名稱並非固定關鍵字,可根據語意自由定義 ( 例如 {userId}{docId}{category})。只要在 if 條件中引用的變數名稱與大括號內一致即可。
  • 慣用命名方式:
    • {database}:通常用於最外層,代表當前資料庫。
    • {userId}{uid}:識別使用者。
    • {document}{doc}:代表集合中的具體文件。

舉例來說,下方的提示詞可以限制使用者的權限,完成後 AI 就會提供如何建立集合的結構,以及對應的安全性規則:

請幫我撰寫 Firestore 的安全性規則,需求如下:
- 查看集合需要登入。
- 具有 admin 權限的使用者,才可以查看「name」集合的內容。
- 其他集合內容只要登入就可以查看。

Vibe Coding Firestore 儲存的資料結構 - 下方的提示詞可以限制使用者的權限,完成後 AI 就會提供如何建立集合的結構,以及對應的安全性規則

除了直接請 AI 撰寫安全性規則,下方也列出幾種常見的安全性規則模式:

建立 Firebase 應用程式

如果要串接 Firestore 資料庫,還需要再 Firebase 的專案裡建立「應用程式」,目的在於讓網頁可以透過應用程式,串連剛剛建立的資料庫*,點擊左上角的「專案總覽」,點擊「新增應用程式」。

Vibe Coding 建立 Firebase 應用程式 - 如果要串接 Firestore 資料庫,還需要再 Firebase 的專案裡建立「應用程式」,目的在於讓網頁可以透過應用程式,串連剛剛建立的資料庫*,點擊左上角的「專案總覽」,點擊「新增應用程式」

因為要串聯網頁,所以選擇「網頁」應用程式。

Vibe Coding 建立 Firebase 應用程式 - 因為要串聯網頁,所以選擇「網頁」應用程式

輸入應用程式的名稱,點擊「註冊應用程式」。

Vibe Coding 建立 Firebase 應用程式 - 輸入應用程式的名稱,點擊「註冊應用程式」

接著就可以看到一些相關的設定,這是待會串聯資料庫要填入的資訊。

Vibe Coding 建立 Firebase 應用程式 - 接著就可以看到一些相關的設定,這是待會串聯資料庫要填入的資訊

應用程式建立後,回到控制台裡,點擊左上角「齒輪」按鈕,點擊「一般」。

Vibe Coding 建立 Firebase 應用程式 - 應用程式建立後,回到控制台裡,點擊左上角「齒輪」按鈕,點擊「一般」

進入專案的「一般」頁籤後,往下拉,也可以看見應用程式的資訊,從中也可以看見所需要的設定資訊。

Vibe Coding 建立 Firebase 應用程式 - 進入專案的「一般」頁籤後,往下拉,也可以看見應用程式的資訊,從中也可以看見所需要的設定資訊

Vibe Coding 使用 Firebase Firestore 儲存資料

當 Firebase 應用程式和 Firestore 資料庫都建立完成後,接下來就可以透過 Vibe Coding 產生網頁,透過網頁儲存資料,開始之前,先由 AI 協助撰寫安全性規則,讓測試階段可以寫入資料。

請幫我撰寫 firestore 安全規則,讓我在測試的時候可以自由寫入資料。

完成後把 AI 撰寫的安全性規則貼到安全性規則區域,任何人都可以寫入和讀取。

Vibe Coding 使用 Firebase Firestore 儲存資料  - 把 AI 撰寫的安全性規則貼到安全性規則區域,下圖是有時間限制的資料庫,時間內任何人都可以寫入和讀取

接著使用下方提示詞產生網頁:

我已經有一個免費版的 Firebase 應用程式和 Firestore 資料庫,測時期的安全性是所有人都可以寫入和讀取資料,請幫我產生一個測試網頁。
- 只使用 HTML 和 JS,不要套用任何框架。
- 畫面上有一個輸入文字欄位,一個送出按鈕和一個清除重填按鈕。
- 按下送出之後,會把文字欄位的內容儲存到 Firestore 裡。

完成後,參考「好用的編輯 Vibe Coding 程式碼工具」教學,把程式碼下載到自己的電腦中 ( 建議使用「JSBin」)貼上 HTML 程式碼,並把假資料的區域換成剛剛應用程式設定的設定碼

Vibe Coding 使用 Firebase Firestore 儲存資料  - 把程式碼下載到自己的電腦中並把假資料的區域換成剛剛應用程式設定的設定碼

完成後開啟頁面 ( 本機環境需要啟用伺服器 ),在輸入欄位輸入內容,按下送出,如果沒有錯誤訊息就表示儲存成功。

Vibe Coding 使用 Firebase Firestore 儲存資料  - 完成後開啟頁面 ( 本機環境需要啟用伺服器 ),在輸入欄位輸入內容,按下送出,如果沒有錯誤訊息就表示儲存成功

回到 Firestore 資料庫,就可以看見剛剛儲存的資料,如果有興趣可以觀察一下程式碼,看看設定的「集合」名稱是否與存入的集合相同 ( 如果沒有設定文件名稱,就會自動使用亂數編碼 )。

Vibe Coding 使用 Firebase Firestore 儲存資料  - 回到 Firestore 資料庫,就可以看見剛剛儲存的資料

Vibe Coding 使用 Firebase Firestore 讀取資料

可以存入資料之後,下一步就可以「讀取」資料,沿用剛剛的網頁,額外提供 AI 下方的提示詞,請 AI 產生網頁。

幫在頁面的下方新增清單欄位,讓我存入資料資料之後,可以即時顯示這些資料

AI 產生網頁後,重複「下載 > 替換應用程式代碼 > 部署」的動作,再次打開網頁,輸入資料後,就會即時在網頁裡看見剛剛儲存的內容。

Vibe Coding 使用 Firebase Firestore 儲存資料  - AI 產生網頁後,重複「下載 > 替換應用程式代碼 > 部署」的動作,再次打開網頁,輸入資料後,就會即時在網頁裡看見剛剛儲存的內容

小結

掌握 Firebase Firestore 後,Vibe Coding 作品即從單機版進化至雲端化。透過 AI 的輔助,以往複雜的 CRUD 操作(增刪查改)現在只需簡單的對話即可完成。建議多嘗試不同的資料結構設計,並持續關注安全規則的設定,為下一個大型雲端應用程式打下堅實的基礎。

為了確保資料庫安全性,強烈建議繼續閱讀:拒絕資料裸奔!Vibe Coding 必備 Firebase App Check 安全防護指南

延伸閱讀

Vibe Coding 的重點都不在於「寫程式」,而是為了配合程式的各種「準備工作」,下方列出 Vibe Coding 相關的教學,透過一系列的教學,就更能掌握正確且順暢的開發流程:

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

生成式 AI 教學

基本介紹

關於生成式 AI 關於 AI 繪圖 AI 繪圖的提示技巧 AI 繪圖軟體比較 ( 2023 ) AI 繪圖軟體推薦 ( 2024 ) 2025 生成式 AI 工具推薦

Vibe Coding 專區

Vibe Coding 教學導讀 認識 Vibe Coding Vibe Coding 新手入門 Vibe Coding 規劃架構流程 Vibe Coding 網頁知識 Vibe Coding Python 知識 Vibe Coding 下載網頁程式碼 Vibe Coding Google App Script 部署網頁 Vibe Coding Github 部署網頁 Vibe Coding 固定網頁樣式 Vibe Coding 使用外部圖片 Vibe Coding 使用 SVG 圖示 Vibe Coding 使用外部字體 Vibe Coding + Spreadsheet 資料庫 Vibe Coding + Firebase 即時資料庫 Vibe Coding + Firestore 資料庫 Vibe Coding 資料庫安全防護 Vibe Coding 串接帳號驗證機制 Vibe Coding 串接 Gemini API

2025 AI 影音工具

ChatGPT - 圖片提示詞技巧 ChatGPT - 客製化機器人 ChatGPT - 使用畫布功能 Gemini - 開始使用 Gemini - 客製化機器人 Gemini - 串接 Google 服務 Gemini - 使用畫布功能 NotebookLM - 開始使用 NotebookLM - 建構知識庫 Google AI Studio - 介面功能 Nano Banana - 影像生成與編輯 Gemini Educator 線上認證 圖片 - AI 圖片快速去背 圖片 - AI 黑白照片上色 聲音 - AI 影片語音轉字幕 影片 - Pika 生成創意影片 影片 - KlingAI 生成影片 影片 - AI 影片趣味特效 影片 - AI 擁抱 ( AI Hug ) 影片 - AI 老照片動起來 圖片 - Dreamina 生成圖片 音樂 - SUNO 創作音樂 音樂 - 免費 AI 音樂素材

ChatGPT

ChatGPT 教學導讀 認識 ChatGPT 開始使用 ChatGPT 優良的提示技巧 基本提示 實用組合提示 角色扮演&對話主題 閱讀並模仿風格 對話中顯示圖片 創作長篇故事與小說 使用 Bing Chat 相關工具或服務

Poe ( Poe AI )

開始使用 Poe 聊天機器人 生成圖片機器人 建立自己的機器人 Youtube 影片重點整理 PDF 重點整理 GPT-4o-mini 分析圖片 讀取網頁進行重點整理 讓 AI 美化提示詞

Ideogram

開始使用 Ideogram 文字產生圖片 圖片 Retry 與 Remix

dzine

開始使用 dzine 提示詞產生圖片 圖片產生圖片 運用圖層功能 運用文字和畫筆 ( 範例 ) 室內設計透視圖實體化 ( 範例 ) 名畫轉真人照片 ( 範例 ) 真人照片轉卡通 ( 範例 ) 真人卡通貼圖

Image Creator

開始使用 Image Creator 提示原則與技巧 搭配 Bing Copilot 產生圖片 ( 範例 ) 產生分享文章縮圖 ( 範例 ) 漫畫書風格

Leonardo.Ai

Leonardo.Ai 教學導讀 Leonardo.Ai vs Midjourney 認識 Leonardo.Ai 註冊與登入 Leonardo.Ai 使用圖片產生器 文字提示語法和準則 Elements 風格元素 使用圖片產生圖片 AI 圖片編輯器 ( Canvas Editor ) 即時 AI 畫布 ( Realtime Canvas ) 即時圖片產生器 ( Realtime Gen ) 圖片升級器 ( Universal Upscaler ) 產生圖片的後續步驟 Prompt Magic 魔法提示 PhotoReal&Alchemy 特色模型 訓練自己的模型 ( 範例 ) 填補缺少的披薩 ( 範例 ) 組合兩片披薩 ( 範例 ) 虛擬陳雷 ( 範例 ) 修改人物年齡 ( 範例 ) 換臉特效 ( 範例 ) 隱藏的人臉或文字 ( 範例 ) 全部填滿皮卡丘 ( 範例 ) 名畫轉真人照片

Recraft

開始使用 Recraft 點陣圖 Raster image 向量圖 Vector image 圖示 Icon 與 Logo 系列影像 Image Set 原型示意圖 Mockup 畫框 Frame、文字 Text 放大 Upscale、改色 Recolor 圖片去背、替換圖片背景 添加、修改、移除景物 圖片產生圖片 點陣圖轉向量圖 自定義圖片風格 合併不同圖片 ( 範例 ) 名畫轉真人照片 ( 範例 ) 照片轉卡通插畫 ( 範例 ) 自製表情貼圖 ( 範例 ) 多格漫畫風格 ( 範例 ) 圖片中加入文字 ( 範例 ) 延伸圖片範圍

Midjourney

Midjourney 教學導讀 認識 Midjourney 使用 Midjourney 使用 niji.journey 設定指令 功能參數 使用文字提示產生圖片 使用圖片產生圖片 優良的提示技巧 多重提示的權重與順序 style tuner 樣式調校 remix 放大、修改與重繪 blend 混合多張圖片 刪除圖片&傳送資訊 ( 範例 ) 修改人物年齡 ( 範例 ) 阿爾欽博托風格 ( 範例 ) 照片轉卡通人物 ( 範例 ) 變胖、變瘦

Vidnoz AI

開始使用 Vidnoz AI ( 影片 ) 照片講話 ( 圖片 ) 人物換臉 ( 圖片 ) 圖片去背

Canva AI 魔法功能

魔法媒體工具 ( 新視窗 ) 魔法工作室 ( 新視窗 ) 魔法變形工具 ( 新視窗 ) 魔法文案工具 ( 新視窗 )

Clipdrop

開始使用 Clipdrop 修改圖片選取區域 延展圖片並生成內容 人物換臉 圖片去背 移除特定物件 放大與增強影像 影像打光 替換天空

Playground AI

開始使用 Playground AI Board 文字產生圖片 Canvas 繪製與修改圖片 Remix 與 Edit 圖片 延展和放大增強圖片 圖片去背、移除物件 搭配 Poe AI 產生圖片

Replicate 模型

認識 Replicate ( 修圖 ) 黑白照片上色 ( 修圖 ) 修復老照片 ( 修圖 ) 增強與放大照片 ( 修圖 ) 更換髮型和表情 ( 繪圖 ) 似顏繪貼圖 ( 繪圖 ) 真人照片轉公仔 ( 繪圖 ) 隱藏的圖案或文字 ( 提示 ) 圖片轉提示詞 ( 提示 ) 改善提示詞

AI 繪圖效果&範例

著色本效果 2D 卡通人物 物品開箱照 像素藝術 百科全書風格 卡通貼紙

AI 繪圖風格大全

風格大全 ( 總覽 ) 風格大全 ( 攝影、照片 ) 風格大全 ( 畫面角度效果 ) 風格大全 ( 媒材、材質 ) 風格大全 ( 卡通、漫畫 ) 風格大全 ( 藝術流派風格 ) 風格大全 ( 藝術家、畫家 ) 風格大全 ( 插畫風格 1 ) 風格大全 ( 插畫風格 2 ) 風格大全 ( 特色風格 )