iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 27
0
Modern Web

我或許沒那麼懂 Web系列 第 27

Cloud Firestore β (19) 離線資料 - 2

延續昨日的討論,如果想知道我們現在得到的資料是來自於 Server 還是 Cache,可以透過 fromCache 屬性做確認。下面透過 API 讓大家暸解如何獲取這個屬性:

  • firebase.firestore.DocumentSnapshot
    • metadata 屬性:non-null firebase.firestore.SnapshotMetadata
      • firebase.firestore.SnapshotMetadata
        • fromCache 屬性:boolean

簡單來說,就是透過讀取 DocumentSnapshot 物件的 metadata屬性,與之下的 fromCache屬性暸解資料來源。如果 fromCache 的值為 true,那麼這個資料可能就來自於 Cache,也就是可能是過時的或不完全的資料;相對的若該值為 false,就代表該資料是來自於伺服器最新的資訊。

db.collection('cities').doc('TXG').get()
  .then(docSnapshot => {
    if (docSnapshot.exists) {
      let source = docSnapshot.metadata.fromCache ? "local cache" : "server";
      console.log("Data came from " + source)
    } else {
      console.log('No such document!')
    }
  })
  .catch(err => {
    console.log('Error getting document', err)
  })

我們也可以透過一些方法去設定當前 Firestore 的連線是啟用還是停用的。這樣不但方便我們針對離線資料功能做測試,也可以因應資料更新不頻繁的情境,透過快取資料來增加 App 速度,然後再另外定期更新資料到本地的快取裡。

firebase.firestore().disableNetwork()
  .then(function() {
      // 停用連線後要執行的敘述
  });
firebase.firestore().enableNetwork()
  .then(function() {
      // 啟用連線後要執行的敘述
  });


上一篇
Cloud Firestore β (18): 離線資料 - 1
下一篇
Cloud Firestore β (20): 監聽變動 - 1
系列文
我或許沒那麼懂 Web31

尚未有邦友留言

立即登入留言