【前端開發】如何透過 Firebase Realtime Database 建立假資料、簡易資料庫(noSQL)

閱讀時間約 8 分鐘
Firebase Realtime Database 是一個 NoSQL 即時雲端資料庫,支援多平台(JavaScript SDKs、Android、iOS),可以讓使用者即時取得資料庫的資料。
Firebase Realtime Database 的特色有:
  • 除了來自主動 HTTP 請求的資料變動,Firebase Realtime Database 有資料同步的功能,只要資料庫的資料有所變更,使用者也能即時被動接收取得更新的資料內容。
  • 權限控管
  • 離線使用,這一點可能對手機平台來說比較有用,網頁服務畢竟還是需要透過連線取得頁面資料,個人覺得對網頁開發者來說比較雞肋一點(也有可能我還沒了解到其中有用之處)。

開始使用吧!

➤ Step 1 :建立 Firebase 專案

進到 Firebase 後,我們可以在自己的 Dashboard 上找到「Add project」的按鈕,點擊後就可以看到下方的畫面。
輸入完專案名稱後,Firebase 會問你這個專案需不需要使用 GA 的服務,可以視個人使用狀況決定要不要使用,選取完後就會進入到建立好的專案頁面。

➤ Step 2:初始化 Realtime Database 服務

我們可以在專案頁面中的左側列表中,找到「Build」菜單下的 Realtime Database,點擊「Create Database」就可以看到 Realtime Database 的初始化畫面。
在第一步驟中,我們可以選擇 Database 的地點。
在第二步驟中,我們可以針對 Realtime Database 的資安進行安全規則(Security rules)設定,在初始化時 Firebase 提供兩種安全規則的選項。
第一種模式為鎖定模式(Locked mode),在這個模式中,除了使用者自己定義的資安規則外,會限制任何第三方進行讀取與寫入資料。
在第二種測試模式(Test mode)中,在啟用 Realtime Database 30 天內,任何人都可以進行資料庫內容的讀寫行為。
使用這個模式需要注意 30 天內一定要進行安全規則的調整,不然當測試模式逾期後,一樣會回到鎖定模式,只有使用者本身才能進行讀寫。
不過我個人比較懶一點,怕 30 天後還要上來改,所以接著我們就來了解一下 Realtime Database 是怎麼透過安全規則的機制進行權限管理吧!

➤ Step 3:建立權限管理

在 Realtime Database 中我們會使用安全規則(Security rules)來進行權限控管,如果你跟我一樣一開始選擇鎖定模式,就可以看到一開始預設的安全規則如下:
根據上圖可以看出 Firebase Realtime Database 是使用 JSON 資料格式來進行撰寫安全規則的設定檔,Firebase 在安全規則上,主要使用 .read 與 .write 兩個 key 去管理資料層級中的讀寫關係,value 的部分則是使用 JavaScript 表達式的方式來撰寫。
在上方的範例中,預設的安全規則是針對整個資料資料結構下去做管理, 且能針對指定資料節點進行權限管理,舉例來說:
不過這一次我並沒有要進行複雜資料的管理,只是要建立簡易的 mock 資料,所以我將安全規則改為全部的資料都能進行讀取,但不能寫入:

➤ Step 4:新增資料

測試好權限後,我們就可以來新增資料了,我們可以透過進入 Data 的頁簽進到這個畫面。
接著點擊右側的更多按鈕(三個點點點),選擇「Import JSON」就會看到以下畫面。
這樣我們就完成資料的上傳啦!在下方的面板上可以看到上傳完的 JSON 檔目錄,這些目錄及其中的鍵值,都可以在這個面板中進行動態的修改、新增、刪除。

➤ Step 5:初始化 Firebase SDK

當資料設定好後,我們就可以進行串接了,回到專案首頁可以看到左上方的「Project Overview」按鈕,點擊下去就可以看到下方的說明,在這個頁面我們可以選擇「</>」 按鈕,來產生要在網頁運行的 Firebase 程式碼。
接著你就會看到這個畫面,輸入完自己的專案名稱後,就會產生對應的設置流程:
設置流程如下:
  1. 可以透過 NPM 下載,或是使用 CDN 的方式載入:
2. 如果是使用 NPM 下載的話,會看到類似的程式碼:

➤ Step 6:取得指定 Firebase SDK

在步驟 5 ,我們只有針對 Firebase 本身的啟用,如果想要啟用 Firebase Realtime Database 的話,可以按照官方文件的提示針對特定服務進行引入,這邊我是引入 Firebase Realtime database 所需要的 getDatabase 方法:
如果要使用 Firebase realtime database 取得資料的話,我們會需要在 getDatabase 這個方法中傳入由 initializeApp 所初始化的內容做為參數,獲得 database 的設定實體。
到這邊我們幾乎完成了九成的設定,但還沒有辦法撈到我們在 Firebase Realtime database 所匯入的 JSON 資料,接著我們需要透過一些 Firebase database 所提供的方法來取得資料。

➤ Step 7:取得 Firebase Realtime Database 資料

除了 getDatabase 方法外,我們還會額外引入 ref 與 onValue 兩個方法。
首先,我們會在 ref 方法傳入兩個參數,第一個參數是 database 的 config,第二個則是我們所需要使用到路徑,透過這樣的方式我們可以取到我們所想要進行操作的參考資料。
接著,我們要使用 onValue 這個方法,onValue 方法是一個監聽器,這個方法的第一個參數會傳入我們透過 ref 方法所取得的參考資料,接著我們就能在第二的參數中的 callback fucntion 中,指定當資料有所改變時我們要進行怎麼樣的操作。
我們可以透過呼叫 callback 的第一個參數中的 val 方法,取得我們在 Firebase 匯入的 JSON 資料啦!
基本上透過上方的七個步驟就可以透過純 JavaScript 的方式實現簡易的 noSQL 即時資料庫啦!
如果你好奇要怎麼在專案中真的應用假資料,這裡我簡單提供如何在 React 元件中取用 Firebase Realtime Database 的方法。

➤ 如何在 React 專案中使用 Firebase Realtime Database

在 React 中,我們可以額外建立一個 util 檔案來放置我們剛寫好的一些設定檔,在需要使用到的方法透過 ESM 的方式匯出。
接著我們可以在元件內引入 onValue 這個監聽方法,與引入我們剛剛封裝好的 Realtim Database util 方法,透過在 useEffect hook 中掛載這個監聽器,當遠端資料有改變時,搭配使用 useState Hook 儲存資料並觸發頁面的渲染。
透過這樣的方式,我們就可以在需要做 React Side Project 時,隨心所欲的使用簡易的即時資料庫啦!
這篇文中目前只有介紹如何透過 onValue 來進行遠端資料庫的監聽,但其實 Firebase 還有其他不同針對讀寫的方法,雖然方法名稱不同,但其實有類似於 RESTful API GET、POST、PUT、DELETE,大家可以參考這篇官方文件進行延伸閱讀,或是以後有機會再跟大家分享其他方法的使用方式。
希望今天的文章可以讓大家了解前端好夥伴 Firebase Realtime Database ,我是 Vivian 我們下次見 :)
關於我:
一名從英文系畢業的前端工程師,喜歡閱讀、寫東西及自我成長。
|聯絡我:vivian.enlife@gmail.com
此篇文章會顯示動態置底廣告
為什麼會看到廣告
為了追求可以窩在座位上、可以心無旁騖思考問題、座位可以亂七八糟沒關係、不需要到處哈腰點頭跑客戶,不用腳踩十公分、連妝都可以不用化的職場人生,文組少女毅然決然踏上RD的養成日常。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
在軟體開發領域中,Backend 和 Frontend 是兩個常被提及的術語。許多同學常常問我,到底是 Backend 比較難還是 Frontend 比較容易?
Thumbnail
前言 現在的前端需求已經越來越高,要考慮HTML及CSS的切版美觀程度,以及React以及Flutter所提出的元件(Componet、widget)觀念,也就是將元件模組化,使元件可以更動態的被程式運行,而不用靜態的客製化每一個介面。開發一個好的元件可以提升整體的開發速度,讓任何使用元件的開發者
Thumbnail
前端開發者常會遇到需要網頁素材的情況,雖然在公司中都可能有可以配合的平面設計師或是UIUX設計師,但在這個多工高效的時代不免也需要前端開發者也可以處理簡單的設計,也可提升設計審美或與設計師溝通的能力。 然而前端開發者也算是擁有設計師的天賦,透過程式碼來完成平面設計,將網頁的每個介面都視為平面設計,
Thumbnail
C2 開始終於使用到 visual studio code, 這個階段學到 JavaScript 核心概念、DOM 操作、API 串接、MVC 架構, 每天都在 coding,每週都在追進度, 用壓縮到極致的時間寫完作業, 但跟著課程內容寫程式碼,真的有學到嗎? 有,吧。 畢竟在寫最後的電影清單
Thumbnail
今天想透過這篇文章與各位分享如何透過 Chrome Devtool 的 Performance Tab 來檢測網頁在執行時的各種效能指標,讓網頁的 Runtime Performance 不再成為你 debug 時的瓶頸!
Thumbnail
大家還記得前幾期的選舉預測嗎? 前幾週 Adams 老師當時針對新竹市長當選人高虹安的看法是:她的隨機時運501817,181代表容易有金錢糾紛,17代表有官司;本命數字包含1096,96代表「絕命」磁場,容易有金錢糾紛。在選舉期間,她也確實傳出有助理費的糾紛,近日才交保出來。
Thumbnail
本文解釋了開放的Solar Plexus(太陽神經叢/情緒中心)是怎樣賺錢的。還有,開放中心如何成為智慧之地。
Thumbnail
在先前的教學中,我都教大家程式寫完以後就架設到「Heroku」的雲端上做使用,但如果你想嘗試其他自創的功能,這時一定會需要一直Debug,如果每次想看結果都要部屬一次Heroku,那這樣就變得相當麻煩,所以今天我就教大家如何利用本機端來提供外網連接的方式吧!!
Thumbnail
雨果說 人類不是易受騙, 人類也不是預設為真。 人類是既開放,又機警。 而我們是如何處理新訊息的呢? 我們會使用兩個系統。 我們會使用 可信度查證。 我們會被道理說服。 我們會聽專家的話。 我們會聽多數人的話。 而且,我們都是理性的。
Thumbnail
在經營部落格的這條路上,如能先掌握要領與方法,才能做到事半功倍,成為一位人氣 blogger,或擁有超出意料外的 blogger 文章人氣。分享經營部落格的秘訣方法,幫助你抓到訣竅,成為人氣 blogger!
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
在軟體開發領域中,Backend 和 Frontend 是兩個常被提及的術語。許多同學常常問我,到底是 Backend 比較難還是 Frontend 比較容易?
Thumbnail
前言 現在的前端需求已經越來越高,要考慮HTML及CSS的切版美觀程度,以及React以及Flutter所提出的元件(Componet、widget)觀念,也就是將元件模組化,使元件可以更動態的被程式運行,而不用靜態的客製化每一個介面。開發一個好的元件可以提升整體的開發速度,讓任何使用元件的開發者
Thumbnail
前端開發者常會遇到需要網頁素材的情況,雖然在公司中都可能有可以配合的平面設計師或是UIUX設計師,但在這個多工高效的時代不免也需要前端開發者也可以處理簡單的設計,也可提升設計審美或與設計師溝通的能力。 然而前端開發者也算是擁有設計師的天賦,透過程式碼來完成平面設計,將網頁的每個介面都視為平面設計,
Thumbnail
C2 開始終於使用到 visual studio code, 這個階段學到 JavaScript 核心概念、DOM 操作、API 串接、MVC 架構, 每天都在 coding,每週都在追進度, 用壓縮到極致的時間寫完作業, 但跟著課程內容寫程式碼,真的有學到嗎? 有,吧。 畢竟在寫最後的電影清單
Thumbnail
今天想透過這篇文章與各位分享如何透過 Chrome Devtool 的 Performance Tab 來檢測網頁在執行時的各種效能指標,讓網頁的 Runtime Performance 不再成為你 debug 時的瓶頸!
Thumbnail
大家還記得前幾期的選舉預測嗎? 前幾週 Adams 老師當時針對新竹市長當選人高虹安的看法是:她的隨機時運501817,181代表容易有金錢糾紛,17代表有官司;本命數字包含1096,96代表「絕命」磁場,容易有金錢糾紛。在選舉期間,她也確實傳出有助理費的糾紛,近日才交保出來。
Thumbnail
本文解釋了開放的Solar Plexus(太陽神經叢/情緒中心)是怎樣賺錢的。還有,開放中心如何成為智慧之地。
Thumbnail
在先前的教學中,我都教大家程式寫完以後就架設到「Heroku」的雲端上做使用,但如果你想嘗試其他自創的功能,這時一定會需要一直Debug,如果每次想看結果都要部屬一次Heroku,那這樣就變得相當麻煩,所以今天我就教大家如何利用本機端來提供外網連接的方式吧!!
Thumbnail
雨果說 人類不是易受騙, 人類也不是預設為真。 人類是既開放,又機警。 而我們是如何處理新訊息的呢? 我們會使用兩個系統。 我們會使用 可信度查證。 我們會被道理說服。 我們會聽專家的話。 我們會聽多數人的話。 而且,我們都是理性的。
Thumbnail
在經營部落格的這條路上,如能先掌握要領與方法,才能做到事半功倍,成為一位人氣 blogger,或擁有超出意料外的 blogger 文章人氣。分享經營部落格的秘訣方法,幫助你抓到訣竅,成為人氣 blogger!