bil*_*ob2 10 javascript firebase google-cloud-firestore
我注意到,当我尝试在firestore中的Collection上使用实时监听器时,每次将新Document添加到集合中时,逻辑将重新运行,我将下载集合中已有的所有内容
马上:
firebase.firestore().collection("Tweets").onSnapshot(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log("snapshot added ", doc)
});
});
Run Code Online (Sandbox Code Playgroud)
有没有办法只跟踪收藏品的添加?我想我可以做那个设备端,但是没有必要转移我已经查询的所有额外数据..
该日志的输出将打印出集合中的每个"tweet",无论是否只添加了一个
EX:初始查询
- 甜蜜1
- 2
- 甜蜜3
新推文,推文4已添加
输出:
鸣叫1
鸣叫2
鸣叫3
鸣叫4
如果这是有道理的
Dou*_*son 12
在集合上使用onSnapshot()时,实际上并没有在每次调用时下载整个集合.文档被缓存,并在集合再次更改时重用.
对于导致调用回调的每个更改,您可以通过检查快照中的更改来找出自第一次调用以来新显示的文档.文档中提供了如何执行此操作的示例.使用查询快照,您可以使用此逻辑来确定哪些文档是新的:
snapshot.docChanges.forEach(function(change) {
if (change.type === "added") {
// change.doc here is new a new document
}
});
Run Code Online (Sandbox Code Playgroud)
小智 1
似乎onSnapshot仅用于收听整个文档,这意味着它将返回您正在收听的文档中的所有字段。所以你不能只检索更改的字段。但你可以根据不同类型的变化做不同的事情:
xxxx.onSnapshot(function(querySnapshot){
querySnapshot.docChanges.forEach(function(change){
if(change.type=="added"){//first time it will be triggered
}else if(change.type == "modified"){//modified
}else if(change.type == "removed"){//removed
}
})
})
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
4207 次 |
| 最近记录: |