Sac*_*aik 6 javascript firebase google-cloud-firestore
我希望 Firestore 每次都首先从缓存中获取数据。根据 Firestore 文档,传递“缓存”或“服务器”选项必须启用相同的选项。下面的例子
db.collection("cities").where("capital", "==", true)
.get("cache")
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
})
.catch(function(error) {
console.log("Error getting documents: ", error);
});
Run Code Online (Sandbox Code Playgroud)
但是,无论我设置“缓存”还是“服务器”,查询似乎都先尝试网络,然后再尝试缓存。
由于 aget()只获取一次您的 a 值,因此它将始终检查来自服务器的数据的最新值。如果这是您应用中的第一个 Firestore 操作,则可能需要它建立与数据库的网络连接,这可能需要一些时间。
如果您想快速从缓存中获取数据,然后再从服务器获取修改,请使用onSnapshot:
db.collection("cities").where("capital", "==", true)
.onSnapshot(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
})
.catch(function(error) {
console.log("Error getting documents: ", error);
});
Run Code Online (Sandbox Code Playgroud)
另请参阅有关获取实时更新的Firestore 文档
要告诉get()从缓存返回数据,请执行以下操作:
db.collection("cities").where("capital", "==", true)
.get({ source: 'cache' })
.then(function(querySnapshot) {
...
Run Code Online (Sandbox Code Playgroud)
但请注意,这意味着您永远不会从服务器获得更新的值。
| 归档时间: |
|
| 查看次数: |
4513 次 |
| 最近记录: |