Миграция с Firebase JS SDK (Web) на реакцию-native-firebase для автономного хранилища - PullRequest
0 голосов
/ 09 июля 2019

Я использую Firebase Web SDK для своего приложения, работающего с протоколом (я использую FIRESTORE для хранения данных). До этого момента у меня не было проблем. Все работает плавно. Но теперь я хочу добавить какой-то механизм автономного хранения в мое приложение, чтобы я мог по-прежнему предлагать некоторые функции или отображать контент, который был кэширован в последнем подключенном сеансе, даже если мои пользователи не в сети. После некоторого исследования у меня сложилось впечатление, что реакции-нативный-огонь-база является предпочтительным способом. Теперь у меня есть несколько вопросов, и мне нравится получать советы от опытных.

  • Является ли response-native-firebase единственным вариантом? Я быстро прочитал о AsyncStorage , и это просто хранилище значений ключей. Учитывая простейшую вещь, которую я хочу сделать, это пролистать список документов пожарного депо, этот вид хранилища не подходит для этого в автономном режиме. Например, если бы я хотел сделать это с помощью AsyncStorage, мне пришлось бы поместить весь контент (возможно, сотни документов), который я получаю из бэкэнда firestore, сохранить их как одно строковое значение, получить их обратно, проанализировать, просмотреть их и т. Д. И написать собственную логику и методы для всего этого.
  • Если бы я должен был использовать реактив-собственный-firebase, я просто позаботился об этом, просто включив автономное хранилище, и вам не нужно писать никакой собственной логики для использования автономного хранилища. Я предполагаю, что данные, которые сохранились для автономного использования, имеют ту же структуру, что и в базе данных firestore. Я чувствую, что если я использую что-либо, кроме реактив-native-firebase, мне придется обрабатывать всю пользовательскую логику для сохранения, чтения и перевода данных в автономный режим самостоятельно. Это правильно?
  • Самое большое беспокойство у меня вызывает количество рефакторинга кода, которое может потребоваться. У меня много строк кода и так много .get().then() строк, как я получаю и отображаю данные из firestore. В документации реактивной базы firebase говорится:

... стремится отразить официальный Firebase Web SDK так же возможно.

Я не уверен, в какой степени это правда. Я проверил справочную документацию модуля firestoreact-native-firebase *, но я просто не могу сказать, сколько из этих методов запросов фактически поддерживается.

Итак, путь - это путь реакции-native-firebase? Будет ли это тяжелым испытанием для меня, пытаясь реорганизовать существующий код? Есть ли у вас подобный опыт? Буду признателен за любую помощь.

Большое спасибо ...

1 Ответ

1 голос
/ 09 июля 2019

Сопровождающий библиотеку реактив-нативный-firebase здесь.

... стремится максимально точно отразить официальный Firebase Web SDK.

Это небольшой отказ от ответственности, поскольку между ними есть некоторые различия, в основном в том, как определенные вещи должны быть реализованы с помощью React Native.

Например, enablePersistence не существует на RNFB. Вместо этого постоянство включено по умолчанию и может быть отключено (или включено) с помощью settings().

Является ли response-native-firebase единственным вариантом? Я быстро прочитал об AsyncStorage, и это просто хранилище значений ключей. Учитывая простейшую вещь, которую я хочу сделать, это пролистать список документов пожарного депо, этот вид хранилища не подходит для этого в автономном режиме. Например, если бы я хотел сделать это с помощью AsyncStorage, мне пришлось бы поместить весь контент (возможно, сотни документов), который я получаю из бэкэнда firestore, сохранить их как одно строковое значение, получить их обратно, проанализировать, просмотреть их и т. Д. И написать собственную логику и методы для всего этого.

Это технически возможно, однако, как вы упоминали, в этом есть и недостатки. В Firestore, когда устройство отключается (что довольно часто встречается в приложениях), и вы пытаетесь выполнить чтение / запись, оно будет считывать / обновлять локальный кэш, что будет вызывать прослушиватели событий. Когда приложение переходит в режим онлайн, оно автоматически синхронизируется с сервером для вас.

Если бы я должен был использовать реактив-собственный-firebase, я просто позаботился об этом, просто включив автономное хранилище, и вам не нужно писать никакой собственной логики для использования автономного хранилища. Я предполагаю, что данные, которые сохранились для автономного использования, имеют ту же структуру, что и в базе данных firestore. Я чувствую, что если я использую что-либо, кроме реактив-native-firebase, мне придется обрабатывать всю пользовательскую логику для сохранения, чтения и перевода данных в автономный режим самостоятельно. Это правильно?

Это все для вас. Мы оборачиваемся вокруг родных Firebase SDK, поэтому ожидаем того же уровня согласованности, если вы разрабатывали нативное приложение для Android / iOS, если не используете React Native.

Самое большое беспокойство у меня вызывает количество рефакторинга кода, которое может потребоваться. У меня много строк кода и так много .get (). Then (), как строки, где я получаю и отображаю данные из firestore.

Вообще все одинаково, за исключением нескольких незначительных методов по причинам, упомянутым выше.

Итак, путь - это путь реакции-native-firebase? Будет ли это тяжелым испытанием для меня, пытаясь реорганизовать существующий код? Есть ли у вас подобный опыт? Буду признателен за любую помощь.

Я бы порекомендовал всем, кто разрабатывает с React Native & Firebase, использовать RNFB. Он предоставляет множество дополнительных функций, которые Web SDK не может обеспечить с помощью React Native. Помимо более громоздкой настройки и изменения импорта, он должен работать примерно так же.

...