繁体   English   中英

如何跳过 Firestore Firebase 中 onSnapshot 侦听器的初始数据?

[英]How to skip initial data from onSnapshot listener in Firestore Firebase?

我想使用一个通知集合作为一次性 Toast 通知的一种 WebSocket 连接,比如当用户存入加密货币并已确认时。 其背后的逻辑是云 function 侦听添加到集合中的文档。

我尝试收听来自上述集合的实时更新并将其限制为最后创建的更新,但我现在遇到的问题是我不希望用户在重新加载时立即收到他们的最后一个 toast 通知。 .即,如果用户不活跃,我不希望用户在下次活跃时看到通知。

我希望它们完全符合它们的本来面目,仅在用户处于活动状态时才发出一次性的 toast 通知。 所以我的问题是,有什么方法可以跳过 onSnapshot 侦听器中的初始数据吗?

Firestore 侦听器返回您请求的数据,然后侦听对该数据的更新。 无法跳过初始数据而只接收更新,但您通常可以更改请求的数据。

例如,如果您确保集合中的每个文档都有创建时间戳,则可以使用查询仅请求在开始侦听后创建的数据:

collectionRef.where("timestamp", ">=", firebase.firestore.Timestamp.fromMillis(Date.now()));

您可以声明一个有状态的 function,它可以通过回调重复调用,但总是跳过第一次。

function skipFirst(operation) {
  let firstTime = true;
  return function () {
    if (firstTime) {
      firstTime = false;
    } else {
      operation();
    }
  };
};

假设您有一个快照处理程序,例如:

function onSnapshot(data) {
   // do something with the data
}

然后您可以包装您的处理程序 function 并将其传递给onSnapshot侦听器,如下所示: skipFirst(onSnapshot)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM