使用 Firestore 后端进行版本控制的最佳实践

Best practices of versioning with Firestore backend

对于经典的 REST apis,最好向 api url 添加一个版本。这个版本可以fi。嵌入路径 (api.myservice.com/v1/dataset) 或作为参数 (api.myservice.com/dataset?v=1)。当部署新版本的 api 时,只要需要它就可以与旧版本并存。 API 的旧版本可以标记为已弃用,最终可以删除。

这为前端提供了适应新版本 API 的宽限期,因此在后端更新、前端开发人员进行调整和前端用户进行更新之间没有停机时间.

当我们使用 Firestore 或任何类似的实时数据库时,前端可以直接访问数据库。数据库的结构可以更改,列或 table 可以重命名、移动或删除。没有 API 为前端抽象这个底层结构。那么,使用实时数据库向前端-后端通信添加某种版本控制的最佳方法是什么?

可能的解决方案:

这些选项对我来说都不是好主意。如果前端可以直接访问数据,最好的解决方案是什么?我知道这个问题可以很快被标记为 'too broad'。如果是,请告诉我如何集中我的问题。

我采用的典型方法是将数据模型的版本号放入数据库中。每当需要对数据库进行模式更改时,我都会检查它是否可以保持向后兼容。如果不是,请增加版本号。

无论哪种方式,模式都编码在我的数据库的安全规则中。这意味着客户端无法写入无效数据,因为它会被安全规则拒绝。

客户端读取版本号,并在版本号高于它们的构建版本时显示请升级