Firestore + Ionic Angularfire Чтение и постоянный кэш - PullRequest
0 голосов
/ 01 октября 2019

Я бы хотел использовать Ionic 4 + Firestore, чтобы предоставить приложению возможность автономной и оперативной синхронизации.

Целевое развертывание на Native App (iOS, Android), электронное приложение (Windows и Mac), PWA.

  1. Сохраняется ли локальный кэш пожарного хранилища в гибридном приложении? Какой тип хранилища используется в кеш-хранилище? Будет ли это что-то вроде localstorage, который будет время от времени удаляться android / iOS / при нехватке памяти.

  2. Я тестирую с помощью приведенного ниже кода и включил EnablePersistence, режим offlineработает просто отлично. Но похоже, что он считает все документы, прочитанные за запуск приложения. Например, у меня есть 100 документов. а. При первом запуске приложения оно должно считаться как прочитанное, поскольку оно синхронизирует все данные с локальным кешем. б. Хотя во второй раз я запускаю приложение, предположим, что документ не обновлялся, он не должен считаться правильным? с. Потому что, по моим наблюдениям, количество операций чтения увеличивается при каждом запуске приложения. д. Будет ли это возможно, например, ни один документ не был обновлен, но мой код заставляет извлекать данные с сервера, после чего он использует счетчик чтения?

Спасибо.

getChatMessages(groupId) {
    return this.db.collection(`groups/${groupId}/messages`, ref => ref.orderBy('createdAt')).snapshotChanges().pipe(
      map(actions => actions.map(a => {
        const data = a.payload.doc.data();
        const id = a.payload.doc.id;
        return { id, ...data };
      }))
    );
  }

1 Ответ

0 голосов
/ 24 октября 2019

Полагаю, вы говорите об автономных данных , думаю, на ваш вопрос можно ответить с помощью документов.

1.1. Сохраняется ли локальный кеш пожарного хранилища в гибридном приложении? Это должно произойти, поскольку функциональность поставляется с клиентскими библиотеками, которые вы должны использовать в своем гибридном приложении. С this doc : эта функция кэширует копию данных Cloud Firestore, которые активно используется вашим приложением, поэтому ваше приложение может получить доступ к данным, когда устройство находится в автономном режиме. ДА, это локальное хранилище.

1.2. Какой тип хранилища FireStore кеш использует? Начиная с this doc : Cloud Firestore является облачной базой данных NoSQL. Вы храните данные в документах, которые содержат поля, сопоставляемые со значениями.

2. a - Вы заявили: «При первом запуске приложения оно должно считаться как прочитанное 100, поскольку оно синхронизирует все данные с локальным кэшем», но, как упоминалось выше, Firestore будет загружать только те данные, которые ваше приложениеактивно используется, так что в основном вы видите подмножество ваших общих данных (100 документов).
b- Что касается вашего заявления о недопустимости изменения документа, в любом случае ваше приложение будет синхронизировать данные, что уже означает проверочный запрос. На этом документе указано: клиентская библиотека Cloud Firestore автоматически управляет доступом к данным в режиме онлайн и в автономном режиме и синхронизирует локальные данные, когда устройство снова подключается.
c- Это утверждение верно и указывает на предложение Iуказал перед.

...