Я построил 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. Сервисные работники поддерживают только более новые API fetch. Кто-нибудь успешно извлек данные из firebase / firestore перед использованием нового api fetch?
Я хотел бы периодически получать данные из firebase с помощью сервисного работника.
Если это не сработает, возможно ли проверить ваши данные с помощью функции Cloud Firestore? Я не уверен, так как для этого понадобится триггер времени или подобное.
Спасибо всем за ваши идеи,
Johannes
Edit:
Как указал Скаригами, я могу решить эту проблему с помощью службы cron, которая запускает функцию firestore. Это работает. Тем не менее, я все еще ищу способ извлекать данные из пожарного магазина напрямую из сервисного работника. Тогда мне не понадобится сторонний сервис cron или облачные функции и специальный токен устройства, на которое я хочу отправить сообщение. Он будет просто получать данные, проверять данные, показывать уведомления, если это необходимо.
Edit:
Я нашел решение! Firestore предлагает отдых API:
https://developers.google.com/apis-explorer/#search/firestore/firestore/v1beta1/
Благодаря этому я могу получить данные из пожарного хранилища моего сервисного работника с помощью API fetch.