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

lg40wkob  于 2023-01-09  发布在  其他
关注(0)|答案(2)|浏览(156)

我想使用notifications集合作为一次性吐司通知的排序WebSocket连接,比如当用户存入加密货币并得到确认时,其背后的逻辑是云函数监听添加到集合中的文档。
我试着收听来自上述集合的实时更新,并将其限制在最后一次创建的更新,但我现在遇到的问题是,我不希望用户在重新加载时立即收到最后一次吐司通知...也就是说,如果用户不活动,我不希望用户在下次活动时看到通知。
我想让它们保持原样,只在用户处于活动状态时发出一次性吐司通知。所以我的问题是,有没有办法跳过onSnapshot侦听器中的初始数据?

68bkxrlz

68bkxrlz1#

Firestore侦听器返回您请求的数据,然后侦听对该数据的更新。没有办法跳过初始数据而只接收更新,但您通常可以更改您请求的数据。
例如,如果您确保集合中的每个文档都有一个创建时间戳,则可以使用查询仅请求在开始侦听之后创建的数据:

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

2nbm6dog2#

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

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

假设您有一个快照处理程序,如下所示:

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

然后,您可以 Package 处理程序函数并将其传递到onSnapshot侦听器,如下所示:skipFirst(onSnapshot)

相关问题