gpt4 book ai didi

objective-c - 将监听器添加到 firestore 时如何绕过缓存

转载 作者:行者123 更新时间:2023-11-30 11:45:12 24 4
gpt4 key购买 nike

我知道this q/a关于绕过 firebase 中的缓存,但我想在 firestore 中执行相同的操作,并对监听器执行此操作...

我的代码目前执行此操作...

FIRQuery *query = [[db collectionWithPath:@"mycollection"] queryWhereField:@"uid" isEqualTo:user.uid];
[query addSnapshotListener:^(FIRQuerySnapshot *querySnapshot, NSError *error) {
//...

这工作得很好,只是它很容易给我旧数据(或在源头删除后的数据)。我想做的是......

if (/*some time has passed*/ || /*first time this launch*/) {
// magic to force the query to bypass anything cached
}
FIRQuery *query = [[db collectionWithPath:@"mycollection"];
// and so on...

其他问题的最佳答案建议使用交易......

[db runTransactionWithBlock:^ id(FIRTransaction *transaction, NSError **error) {
// stuck

但是 FIRTransaction 只有一个与读取相关的方法,即向 getDocument:error: 传递 FIRDocumentReference *

另外 - future 的编辑:我正在用 Objective-C 编写,但我很高兴能快速阅读建议。如果您决定删除 swift 标签,请解释某人如何用任一语言表达问题。 (请注意:“我们只使用语言标签来询问有关语言本身的问题”这一说法被证明是错误的)。

最佳答案

尝试绕过本地缓存并不是最好的方法,因为您不应该假设客户端曾经缓存过任何内容。 SDK完全管理缓存 - 它是作为一种优化而提供的,这样您就不必为文档读取支付更多费用。

如果您需要对数据库中更改的内容进行审计跟踪,则该跟踪本身应该记录在数据库中,以便无论何时访问数据,无论是否有任何缓存,数据都是正确的。

关于objective-c - 将监听器添加到 firestore 时如何绕过缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48912248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com