【问题标题】:Fetch data from firebase/firestore with service worker使用 service worker 从 firebase/firestore 获取数据
【发布时间】:2018-08-25 00:30:34
【问题描述】:

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

这是我工作代码中的一个 sn-p:

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);
});

如果我尝试在我的 service worker 中运行 .onSnapshot,我会收到 xmlhttprequest 未知或类似的消息。

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

我想使用 service worker 定期从 firebase 获取数据。

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

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

编辑:

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

【问题讨论】:

  • 网络工作者(支持 XMLHttpRequest)不是更适合这个用例吗?至于云功能,你可以使用第三个 cron 服务,比如 cron-job.org,来触发 https 功能
  • 我做了一些研究,但找不到简单的答案。当用户关闭应用程序/页面/浏览器时,网络工作者是否还活着?如果是,那么我可以使用一个简单的网络工作者。我会调查 cron-job.org。谢谢
  • 看起来 firestore 接受 http 请求作为触发器。那是完美的,我可以使用 cron-job 来完成请求。感谢您为我指明了那个方向。

标签: javascript firebase google-cloud-firestore fetch service-worker


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多