延續昨日的討論,如果想知道我們現在得到的資料是來自於 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() {
// 啟用連線後要執行的敘述
});