代码之家  ›  专栏  ›  技术社区  ›  Thomas David Kehoe

Cloud Firestore onSnapshot()只能在更改时触发,而不能获取初始状态吗?

  •  2
  • Thomas David Kehoe  · 技术社区  · 8 年前

    这个 documentation 说:

    可以使用onSnapshot()方法侦听文档。使用您提供的回调进行的初始调用会立即使用单个文档的当前内容创建文档快照。然后,每次内容更改时,另一个调用都会更新文档快照。

    2 回复  |  直到 8 年前
        1
  •  5
  •   Doug Stevenson    8 年前

    Firestore的侦听器不是这样工作的。您将始终收到与fetch或查询相关的文档,然后在该文档之后进行更新,只要侦听器仍处于添加状态。没有仅接收增量的模式。

    如果您只想接收特定的数据,您可能想知道如何查询它,例如,添加一个timestamp字段,让客户机只查询自某个时间以来已更改的文档。

        2
  •  -1
  •   exploitr    7 年前

    var initState = true;
    db.collection('col').doc('id').onSnapshot(....
    

    然后可以在函数内部验证应用程序启动时不希望运行的代码。

    var initState = true;
    db.collection('col').doc('id').onSnapshot(....
    if(!initState){ // if is not initial state
       //your code
    }
    

    应用程序启动后,必须将initState更改为 假

    var initState = true;
    db.collection('col').doc('id').onSnapshot(....
    if(!initState){ // if is not initial state
       //your code
    }
    
    setTimeout(function () { // cause onSnapShot executes first
       initState = false;
    }, 2000);