当本地更改时,onSnapshot fromCache始终为false

伊恩

根据描述在这里我期望snapshot.metadata.fromCachetrue当文档被听取了相同的客户端修改为听者,如

  1. 本地.update(...)立即触发onSnapshot处理程序(并将快照fromCache设置为true
  2. 数据发送到数据库
  3. firebase客户端收到返回消息,并且不做任何事情(不会触发onSnapshot),因为服务器数据与缓存一致。

因此,fromCache应该始终在true本地更改触发onSnapshot时使用。

但是,仅在前两到三个onSnapshot响应中fromCache出现这种情况,之后似乎总是false

测试示例:


// ... firestore init w/ a test project and with persistence enabled. 

const db = firebase.firestore();
db.settings({
    ignoreUndefinedProperties:true
})

// Where "_test" is an empty collection with full allowance for read/write
await db.collection("_test").doc("deleteme").set({}); 

let doc = db.collection("_test").doc("deleteme") 

// ?! Expect this to be true but after the first one or two occurrences it is always false.
doc.onSnapshot(s=>{console.log("test snapshot change from cache? ",s.metadata.fromCache)}) 

let x = 0;      
let poke = async ()=>{
  doc.update({
    n:Math.random()
  })
  await sleep(3000); // generic custom delay 
  window.requestAnimationFrame(poke)
};
window.requestAnimationFrame(poke);

编辑:这里的问题是由于与其他问题类似的知识缺失:Firestore onSnapshot更新事件是否是由于本地客户端集引起的?

弗兰克·范普菲伦

因此,当onSnapshot被本地更改触发时,fromCache应该始终为true。

我不认为这是如何定义的;客户端是否知道其本地快照是否与服务器有关是更多。

您也许混淆fromCachehasPendingWrites这个fromCache名字确实令人困惑。我理解fromCache为“可能尚未包含服务器中的所有数据”,而“isPending则可能包含服务器尚不知道的数据”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery更改时为只读

来自分类Dev

Unix:if / then语句始终为false

来自分类Dev

UserManager VerifyUserTokenAsync始终为False

来自分类Dev

TRegEx :: IsMatch始终为false

来自分类Dev

变量始终计算为false

来自分类Dev

更改集合,CollectionChanged始终为null

来自分类Dev

网址更改时表“跳转”,角度为js

来自分类Dev

标题更改时将CMake设置为Ninja重建吗?

来自分类Dev

SQL OR Linq:类别更改时如何分类为不同的批次

来自分类Dev

当文本被 javascript 更改时,为文本框触发 TextChanged

来自分类Dev

尝试为扩展 HashMap 的类获取更改时出错

来自分类Dev

scala - 当列表中的重复值更改时重置为 1

来自分类Dev

Laravel angularjs Request :: ajax()始终为false

来自分类Dev

烧瓶-wtforms:验证始终为false

来自分类Dev

比较jquery .data()与String始终为false

来自分类Dev

验证Digitaly签名XML始终为false

来自分类Dev

Django form.is_valid()始终为false

来自分类Dev

单击按钮后,IsPostBack始终为false

来自分类Dev

Request.IsAuthenticated始终为false

来自分类Dev

Response.IsRequestBeingRedirected始终为false

来自分类Dev

is_uploaded_file返回始终为false

来自分类Dev

AutoCompleteTextView.isPopupShowing()始终为FALSE

来自分类Dev

Auth :: attempt值始终为false

来自分类Dev

isCancel在axios中始终为false

来自分类Dev

Excel If语句始终显示为false

来自分类Dev

RegEx.Test返回始终为false

来自分类Dev

比较jquery .data()与String始终为false

来自分类Dev

TaxonomyField.Open始终为false

来自分类Dev

浮点比较(1.0 == 1.0)始终为false