如何解决take1on snapshotChanges:即使数据未更改,Angular Firestore也会在第二次调用时从服务器获取数据吗?
我正在使用Angular Firestore访问Cloud Firestore数据库,并且几乎在所有我的get请求上,我在snapshotChanges()上应用rxjs take(1)运算符,以便在请求完成后不监听数据更改。
例如:
export class myCollectionService {
constructor(private db: AngularFirestore){}
getData(){
return this.db.collection<myCollection>("myCollection")
.snapshotChanges()
.pipe(take(1));
}
}
第二次调用getData()会发生什么?即使从上次调用以来没有任何变化,还是从服务器获取数据还是有某种缓存机制?
解决方法
将其部分地基于评论发布为社区Wiki。
如here所述,启用脱机访问数据确实对您来说是个好主意,因为您将处理缓存的数据,并且可以配置何时将其与来自服务器。专门针对带有Firestore的Angularfire,您可以获得更多信息here-一种不同的操作方式,而不是MultipartFile
。
此外,如here所述,Firestore SDK不会自动缓存,因此您需要专门进行设置-例如,使用上面告知的方法。您还可以通过使用take(1)
来确认这一点,并验证其是否在缓存中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。