Измените свойства POJO базы данных Firebase Realtime с помощью @PropertyName, Как перенести существующие данные - PullRequest
0 голосов
/ 03 августа 2020

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

Например, существующее свойство базы данных в реальном времени:

   purchasePrice: 60

и, используя @PropertyName, я хочу изменить его так, чтобы он теперь выглядел так:

   pp: 60

Измененный POJO теперь имеет @PropertyName, например:

   @PropertyName("pp")
   public float purchasePrice;

Вопрос в следующем: Какова наилучшая стратегия миграции, при которой все существующие «PurchasePrice» обновляются до нового имени в базе данных реального времени, то есть «pp» в этом примере?

Один наивный подход, о котором я могу думать, - это обновление приложения на стороне клиента извлеките все данные, используя старые POJO, и назначьте каждое свойство новым POJO (newPOJO.pp = oldPOJO.purchasePrice), а затем сохраните их в БД. Но должен быть способ получше, так как у меня много POJO.

Спасибо,

1 Ответ

1 голос
/ 03 августа 2020

Если вы хотите изменить имя поля в базе данных везде, где это происходит, на самом деле нет простого способа сделать это. Вам нужно будет:

  1. Запросить все узлы, где он может появиться
  2. Проверить, нужно ли изменить поле
  3. Записать новый данные обратно в это место

Делаете ли вы это с помощью кода, который использует @PropertyName или что-то более общее c, на самом деле это не имеет значения.

...