我正在运行 firestore 查询来获取数据,但该查询正在从之前的缓存数据查询返回数据,然后在来自服务器的第二次传递中返回其他数据(之前未查询到)。有没有办法可以禁用 firestore 查询的缓存,以便每次查询某些内容时请求都会发送到数据库。
this.parts$ = this.db.collection<OrderBom>('OrderBom', ref => {
let query : firebase.firestore.Query = ref;
query = query.where('orderPartLC', '==', this.searchValue.toLowerCase());
return query;
}).valueChanges();
改变这一点.valueChanges()
to a .snapshotChanges()
然后你可以应用过滤器。请参阅下面的示例。
我不喜欢更改默认行为(默认配置)。我认为这是一种理想的行为,良好的做法是尽快向用户显示数据,即使您刷新屏幕两次。
我认为过滤并不是一个坏习惯fromCache === false
当我们别无选择的时候。 (就我而言,在收到第一个请求后,我会发出更多请求,因此由于承诺和其他异步“任务”缓存/服务器顺序完全丢失)
See 这个已关闭的问题 https://github.com/firebase/firebase-js-sdk/issues/2976
getChats(user : User) {
return this.afs.collection<Chat>("chats",
ref => ref.where('participantsId', 'array-contains', user.id)
.snapshotChanges()
.pipe(filter(c=> c.payload.doc.metadata.fromCache === false)).
.pipe(map(//probaly want to parse your object here))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)