使用firebase时,如何管理在现有对象上添加新属性?

使用firebase时,如何管理在现有对象上添加新属性?,firebase,firebase-realtime-database,nosql,Firebase,Firebase Realtime Database,Nosql,我有一个应用程序使用React+Redux,并与Firebase配合使用作为后端 通常情况下,我希望向现有对象添加一些新属性。 执行此操作时,现有对象只有在使用处理这些新属性的应用程序的新版本进行修改后才能获取属性 例如,假设我有一个/categories/节点,其中有如下对象: { name: "Medical" } 现在假设我想添加一个默认值为“ 是否可以一次更新所有类别,以便字段始终以默认值存在 或者在客户端代码中处理这个问题 现在我总是测试这些值,看看它们是否在这里,但这似乎不是

我有一个应用程序使用React+Redux,并与Firebase配合使用作为后端

通常情况下,我希望向现有对象添加一些新属性。 执行此操作时,现有对象只有在使用处理这些新属性的应用程序的新版本进行修改后才能获取属性

例如,假设我有一个
/categories/
节点,其中有如下对象:

{
   name: "Medical"
}
现在假设我想添加一个默认值为

是否可以一次更新所有类别,以便字段始终以默认值存在

或者在客户端代码中处理这个问题

现在我总是测试这些值,看看它们是否在这里,但这似乎不是一个很好的方法。我希望有一个地方来定义默认值

为每种对象类型创建类似乎很有趣,但我不确定如何在Redux中实现这一点


例如,在获取所有
类别时,是否只使用reducer将其转换为类实例?我担心这会导致性能下降。

任何对Firebase数据库的写入操作都需要知道所写入节点的确切路径

没有内置操作来批量更新路径仅部分已知的节点

您可以保持客户端代码足够健壮以处理丢失的属性,也可以运行迁移脚本将新属性添加到每个相关节点。但是,由于该脚本必须知道每个要写入的节点的确切路径,因此它可能首先必须读取/查询数据库以确定这些路径n要更新的项目数,它可能会在一次调用中使用多位置更新来更新多个节点

firebase.database().ref("categories").update({
  "idOfMedicalCategory/icon": "newIconForMedical",
  "idOfCommercialCategory/icon": "newIconForCommercial"
  "idOfTechCategory/icon": "newIconForTech"

})

我更倾向于健壮的代码方法。我觉得处理这个问题的一个好方法是为每个实体创建类,这可能是单点故障。你可以在构造函数中初始化一些东西,也可以在一个地方添加函数/相关逻辑,在任何地方都可以重用。但我仍然担心这种解决方案的性能成本。在获取时,reducer必须为每个实体创建新的类实例。对此有何想法?