【发布时间】: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