Использование базы данных Firebase в реальном времени для быстрого запуска проекта и его запуска и запуска - это прекрасно.
Но когда проект жив, а иногда, позже, вам необходимо обновить тип данных вашегоВ пользовательских объектных моделях вещи могут стать немного менее удивительными.
Скажем, я запустил проект со следующей моделью (пример kotlin):
@Parcelize
data class CustomModel (
var customField: Int = 0,
)
customField, представляющий логическое значение 0 или1, но как число
Через несколько недель я понимаю, что это поле должно быть логического типа (изначально поддерживается firebase)
Поэтому я хочу изменить приведенную выше модель на:
@Parcelize
data class CustomModel (
var customField: Boolean = false,
)
Проблема в том, что я уже добавил некоторые данные со старым форматом для моего customField
(Int) в мое хранилище документов
И с помощью метода DataSnapshot в Firebase:
@PublicApi
public <T> T getValue(@NonNull Class<T> valueType)
приводит к com.google.firebase.database.DatabaseException: Failed to convert value of type java.lang.Int to Boolean
Итак, вопрос прост, как мы можем справиться с миграцией схемы базы данных в Firebase?
Я знаю, что могу просто поймать исключение, но мне нужно действительно добавить некоторую собственную логику преобразования, чтобы преобразовать эти Ints в логические значения и наоборот, чтобы обеспечить обратную совместимость со старыми клиентами