Android-啟用Firestore資料庫
Firestore是Google的後端服務Firebase所提供的功能之一。它的類型屬於NoSQL,因此牽涉到Collection(集合)與Document(文件)的概念。Firestore還具有即時同步資料的功能,也就是說一旦資料庫有異動,資料便會自動同步到相關的用戶端上(如手機App),端看程式如何設計。
本文將帶領讀者啟用Firestore資料庫,並在Android專案透過程式新增一筆資料,隨後在網頁上檢視。使用的是Kotlin語言。
一、啟用資料庫
首先來到Firebase專案的首頁,點選左邊的「Database」,進入資料庫的首頁。請在Cloud Firestore的區塊點選「建立資料庫」。
接著需設定資料庫的安全性規則。鎖定模式是只有合法的使用者能存取資料庫,與Authentication功能有關。測試模式是任何存取請求都會被接受,例如在Android專案直接隨便寫個新增資料的程式,是能夠執行成功的。此處為了教學用途,我們選擇測試模式即可,這項設定日後也可修改。
按下啟用後稍等一下,出現下圖的畫面就代表啟用完成了!這個畫面是資料存放的地方,日後應用程式若有新增、查詢、修改或刪除的動作,也能到這裡來檢視結果。
二、匯入函式庫
在Firebase啟用完成後,接著要在Android專案匯入相關的函式庫。請到專案層級的build.gradle檔案,在下方的dependencies區塊加入:
implementation 'com.google.firebase:firebase-firestore:17.0.1'
如果還沒有匯入Firebase核心函式庫,也請一併加入:
implementation 'com.google.firebase:firebase-core:16.0.1'
以上為2018/12/22的版本號。完畢後請點選右上方的「Sync Now」重新建置專案。
接著開啟「MainActivity.kt」(或其他想顯示的Activity),在「onCreate」方法中宣告Firestore的程式物件:
val db = FirebaseFirestore.getInstance()
若Android Studio沒有出現無法辨識的訊息,就能確認函式庫有設置完成。
三、新增資料
本節將在Firestore透過程式來新增資料。請在Android專案新建一個類別:
class Student(
var stuId: Int = 0,
var name: String = "",
var birthday: String = "") {}
這是一個「學生」的類別,之後會在資料庫新增物件作為示範。請在MainActivity的onCreate方法撰寫程式,讓我們先建立學生物件:
val student = Student()student.stuId = 10346099
student.name = "Vincent"
student.birthday = "1996/01/01"
接著就能用下面的程式,將資料新增到資料庫中:
資料庫物件.collection("集合名稱").add(要新增的文件)db.collection("Students").add(student)
從字面上來看,意思是在資料庫取得集合(collection),並在裡面新增資料。如果這個集合不存在,到時也會建立一個。
最後將App啟動看看吧!開啟後,onCreate方法會被執行,在資料庫新增一筆資料。這時已經能在Firestore的網頁檢視,但由於是新的集合,因此需要刷新畫面才看得到。
四、Firestore的架構
接著簡單地介紹一下Firestore資料庫的架構。
首先最左邊是集合(collection),集合內有文件(document),也就是從用戶端傳送進來的資料。有點像關聯式資料庫的資料表與值組。
在右邊能看到欄位與值,就是上一節在程式中所定義的。另外也能直接在上面修改或刪除。而文件內又可以再包含集合,形成類似樹狀的結構。
在中間有一串英文數字,這是文件的ID,由Firestore自動產生。筆者曾經寫過Spring Boot,在MongoDB新增資料時,也會產生一個ID,如此就能在業務邏輯層透過ID進行查詢、刪除等操作。
要在Android專案的程式中指向這些集合或文件,就是透過「collection」與「document」這兩個方法來表示路徑:
資料庫物件.collection("集合名稱").document("文件ID")db.collection("Students").document("hxfMMuRT7S...")
如果按照這個例子,對document物件使用「set」方法,並傳入物件,甚至能達到以自己定義的文件ID來新增或修改資料的效果。