使用Firestore后端进行版本控制的最佳做法

时间:2019-11-18 09:55:59

标签: firebase google-cloud-firestore api-versioning

使用经典的REST API,将版本添加到api网址是一个好习惯。此版本可以是fi。嵌入在路径(api.myservice.com/v1/dataset)中或作为参数(api.myservice.com/dataset?v=1)。部署新版本的api后,只要需要,它就可以与旧版本并存。可以将旧版本的API标记为已弃用,并最终将其删除。

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

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

可能的解决方案:

  • 无论如何都使用REST api作为包含版本的额外层。缺点:使用这种方法会失去实时数据库的优势,例如实时更新和用户管理。

  • 将抽象层移动到前端并公开最低要求的版本。如果前端不符合该版本,则会强制更新前端。缺点:信任前端可以做正确的事,而不是强制执行。

  • 将版本添加到项目名称或表名称中。这将导致大量额外的冗余,其中数据必须不断保持同步。这可能会导致额外的费用,并且容易出错。

  • 还有其他人吗?

对我来说,这些选项都不是好主意。如果前端可以直接访问数据,那么最佳解决方案是什么?我知道可以很快将这个问题标记为“过于广泛”。如果是,请告诉我如何解决我的问题。

1 个答案:

答案 0 :(得分:1)

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

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

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