首页 > 解决方案 > 使用 service worker 从 firebase/firestore 获取数据

问题描述

我构建了一个从 firestore 获取数据的 PWA。我想每隔几个小时对该数据进行一些检查,这就是为什么我想为此使用服务人员。

这是我的工作代码的一个片段:

billsCollection.orderBy('dayOfMonth', 'asc').onSnapshot(querySnapshot => {
  let billsArray = [];
  querySnapshot.forEach(doc => {
    let bill = doc.data();
    bill.id = doc.id;
    billsArray.push(bill);
  });
  store.commit('setBills', billsArray);
});

如果我尝试在我的服务工作者中运行 .onSnapshot,我会收到 xmlhttprequest 未知或类似的消息。

'firebase/app' 和 'firebase/firestore' 似乎使用旧的 xmlhttprequest 与 firebase/firestore 通信。Service Worker 仅支持较新的 fetch api。在使用新的 fetch api 之前,有没有人成功地从 firebase/firestore 获取数据?

我想使用服务工作者定期从 firebase 获取数据。

如果这不起作用,是否可以使用 Cloud Firestore 功能检查您的数据?我不确定,因为它需要时间事件触发器或类似的东西。

谢谢大家的想法,约翰内斯

编辑:

正如 Scarygami 指出的那样,我可以通过使用触发 firestore 功能的 cron 服务来解决这个问题。这行得通。尽管如此,我仍在寻找一种直接使用服务人员从 Firestore 获取数据的方法。然后我不需要第 3 方 cron 服务或云功能以及我想向其发送消息的设备的特定令牌。如果需要,它会简单地获取数据、检查数据、显示通知。

标签: javascriptfirebasegoogle-cloud-firestorefetchservice-worker

解决方案


在提出问题时这可能是不可能的,但同时它是可能的。

在这里查看我的其他答案:https ://stackoverflow.com/a/71014462/3243751


推荐阅读