Cloud Firestore 是快速、全代管、無伺服器且雲端原生的NoSQL 文件資料庫. 它不像傳統的Relation Database, 在使用上非常簡易和方便.
Collection是Document的集合,Document可以連結Collection和儲存Field. Field的Type有 String, Number, Boolean等等
在Ionic使用Firestore需要導入模組import { AngularFirestore } from '@angular/fire/firestore';
constructor(public db:AngularFirestore, ...) { }
this.db.collection('collection-name').snapshotChanges().pipe(
map(data =>{
return data.map(
data=>{
const doc = data.payload.doc.data();
const id = data.payload.doc.id;
return { id, doc };
}
);
})
);
以上的Code是一個得到一個Observable. 使用Map去過濾回傳的值,我只需要id和doc的值. doc即是collection所有的值.
如果我們只想得到Collection特定的值,我們可以透過id來取得
return this.db.collection('collection-name').doc(id).valueChanges();
如果我想取得nested collection,然後規定順序, 方法如下
return this.db.collection('collection-name').doc(id).collection('collection-name', ref => {return ref.orderBy('order')}).valueChanges();
其實Firestore提供的api很強大,跟sql一樣有很多不同的query 方法, 更多資料請參考 https://firebase.google.com/docs/firestore/query-data/get-data
我們當然也可以新増或更改 Collection和Document
//先新增一個random的id
const id = this.db.createId();
this.db.collection('collection-name').doc(id).set({
//field:value
name:name
}).then((res)=>{
//增新資料成功
});
最後我們可以刪除資料
db.collection("collection-name").doc("id").delete().then(function() {
console.log("Document successfully deleted!");
}).catch(function(error) {
console.error("Error removing document: ", error);
});
對於只想專注在前端開發或是對於後端開發沒有經驗的人,Firebase真的是個完整方案,使用它可以開法功能完整的App.
如果有錯誤和補充,歡迎留言,謝謝!