Loopback有一种简单的方法来处理数据库迁移,这与使用knex.js等方法不同。在docs about migration中,它说为了改变表的模式,你只需要编辑你的模型,Loopback将自动更新(在自动更新的情况下)或重新创建(在自动迁移的情况下)表。
但现在的情况是:假设我有一个正在生产的项目。在数据库中,我有一个表users
,其中包含字段:
first_name: string
last_name: string
然后我想把我的模式改为
full_name: string
在Loopback的情况下,为了获得这个模式,我只需要编辑模型。但是如何为现有用户设置full_name
?docs中描述的方法让我感到困惑,原因如下:
如果我创建字段更新脚本(也删除以前的脚本以避免错误)并在模型中的每次更改后运行迁移,它就可以工作。
但是,如果在部署到生产环境之前,我必须在本地环境中执行几次迁移(也是设置新值的脚本),该怎么办?
谢谢你的帮忙。
2条答案
按热度按时间toe950271#
LoopBack提供的自动更新/重新创建功能将始终限于简单的用例,如添加新列。一旦您需要迁移更高级的模式更改,例如重命名一个列,你将永远不得不编写一个自定义的迁移步骤-这就是我被告知的Knex的亮点。
我们已经意识到了这个问题,并一直在讨论它在下面的问题-随时加入讨论!
如果我创建字段更新脚本(也删除以前的脚本以避免错误)并在模型中的每次更改后运行迁移,它就可以工作。
但是,如果在部署到生产环境之前,我必须在本地环境中执行几次迁移(也是设置新值的脚本),该怎么办?
就我个人而言,我对Evolutionary Database Design有很好的经验,其中每个迁移步骤都被分配了一个唯一的更改ID,并且有一个新的表来跟踪应用的更改/迁移。
mdfafbf12#
loopback4-migration扩展可用于处理更新现有数据库实体等任务。它提供了一个通用接口来实现自定义迁移脚本,并根据与数据库版本相比的应用程序版本自动处理数据库的版本控制和脚本的执行。