iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
1

昨天我們談過firestore是firebase提供的其中一項服務。
firestore 有很多優點,

  • 高彈性:支援多種資料型態
  • 即時更新:可讓所有裝置取得最新資料
  • 離線支援:設備離線,應用程式還是能更新資料

在結構方面,firebase 本身是NoSQL資料庫,資料的建立上是利用collection及document像條鎖鏈串在一起:
因此當你需要尋找所要的資料,便需要依循其規律層層尋找。
在其code便可知其一二。

const alovelaceDocumentRef = db.collection('users').doc('alovelace');

因此,在未來幾周都會蠻容易看到這種取資料的方法。
而在取collection中所有doc或是在doc取得所有field value都有各自的方法。
EX取collection中所有doc:

const ref = db.collection('collection);
const snapshot = await ref.get();

snapshot.forEach(doc => {
  console.log(doc.id, '=>', doc.data());
});

其中doc.id為你在firestore建立的doc名稱,doc.data()則是取得doc中所有欄位資料

EXdoc取得所有field value

const ref = db.collection('collection').doc('doc');
const doc = await ref.get();

console.log('Document data:', doc.data());

doc.data()同上取得doc中所有欄位資料,若要取得特定欄位
EX 取的collectio=>doc=>column1:"HI"

const ref = db.collection('collection').doc('doc');
const doc = await ref.get();

console.log('Document data:', doc.data().column1);

同時firebase也能進行排序與限制數量
EX

const lastThreeRes = await ref.collection('collection').orderBy('column1', 'desc').limit(3).get();

.orderBy(欄位,asc desc)進行排序
.limit(X)限制只能得到前X筆資料

另外firestore也能進行簡單的query,但只能使用

  • <

  • <=

  • ==

  • >

  • >=

  • array-contains

  • in

  • array-contains-any
    EX

      const query1 = await ref.where('column1', '==', 'HI').get();
      const query1 = await ref.where('column1', '>=', 'HI').get();
      const query1 = await ref.where('column1', '<', 'HI').get();
    

上一篇
Day7 如何用tts推播(3,建立firebase)
下一篇
Day9 firebase functions(1)
系列文
手拉手教自己用樹梅派、GoogleHome、GCP做一個AI智慧提醒機器人!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言