如何在生产中的 Flutter 应用程序中更改数据模型?

How to make a data model change in a Flutter app in production?

我正在使用 Flutter 开发我的第一个移动应用程序,但我有疑问。

假设应用收到这样的 JSON:

{
  "_id": "123",
  "name": "X",
}

要接收和发送它,将创建以下模型:

class User {
   String id;
   String name;

   User({
      this.id,
      this.name
   });

   factory User.fromJson(Map<String, dynamic> json) => User(
      id: json["_id"],
      name: json["name"]
   );

   Map<String, dynamic> toJson() => {
      "_id": id,
      "name": name
   };
}

现在出于某种原因,我需要将该数据的模型结构更改为,例如:

{
   "id": "123",
   "info": {
      "name":"X",
      "age":"20"
   }
}

数据库中存在旧结构存储的对象,当应用程序接收它们时,会出现错误,因为新模型与旧数据不匹配。

如果应用已经在生产中,在不影响用户的情况下避免此错误的最常见方法是什么?

有无数的版本控制思想和框架,但基础知识是:

  • 将您的数据更新到新模型
  • 创建第二个端点,将新数据模型传送到您的应用程序
  • 保留旧的端点,从新的数据结构读取,所以旧的应用程序仍然可以工作!
  • 创建一个应用程序更新,您可以在其中与新端点对话并使新数据结构可用
  • 当您确定有足够多的用户进行了更新(可能是“从不”)时删除旧的终点

或:

  • 更改后端
  • 更改前端
  • 同时部署它们并强制用户更新

第一个对用户更友好并且更容易处理,因为您可以异步工作和部署。例如,您可以先部署新后端,同时等待应用商店批准新应用。