Получить данные из пожарной базы / пожарного магазина с обслуживающим работником - PullRequest
0 голосов
/ 25 августа 2018

Я построил 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...