【发布时间】:2019-03-05 03:27:19
【问题描述】:
使用 Firebase 实时数据库快速启动并运行项目非常棒。
但是当项目运行时,有时,稍后,您需要更新自定义对象模型的数据类型,事情可能会变得不那么令人敬畏。
假设,我使用以下模型(kotlin 示例)启动项目:
@Parcelize
data class CustomModel (
var customField: Int = 0,
)
customField 表示布尔值 0 或 1,但作为数字
几周后,我意识到这个字段可能应该是布尔类型的字段(firebase 原生支持)
所以我想把上面的模型改成:
@Parcelize
data class CustomModel (
var customField: Boolean = false,
)
问题是,我已经为我的customField (Int) 添加了一些旧格式的数据到我的文档存储中
并使用 firebase DataSnapshot 的方法:
@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 中处理数据库架构迁移?
我知道我可以捕获异常,但我需要真正添加一些自定义转换逻辑,以便将这些 Int 转换为布尔值,反之亦然,以便与旧客户端向后兼容
【问题讨论】:
标签: java android firebase firebase-realtime-database kotlin