Node.js 如何在Google App Engine上运行迁移

Node.js 如何在Google App Engine上运行迁移,node.js,google-app-engine,sequelize.js,Node.js,Google App Engine,Sequelize.js,我有一个Node.js应用程序在谷歌应用程序引擎上运行 我想运行sequelize迁移 是否可以从my node.js应用程序的实例中运行命令 本质上类似于heroko的run命令,该命令将在Heroku dyno中运行一次性进程 如果这不可能,那么运行迁移的最佳做法是什么 我总是可以将它添加到gcp构建中,但这将在每次部署中运行。在GAE中不可能运行独立的脚本/应用,请参见(在python上下文中,但一般的想法适用于所有运行时) 我运行(数据存储)迁移的方式是将迁移脚本本身的功能移植到我的GA

我有一个Node.js应用程序在谷歌应用程序引擎上运行

我想运行sequelize迁移

是否可以从my node.js应用程序的实例中运行命令

本质上类似于heroko的
run
命令,该命令将在Heroku dyno中运行一次性进程

如果这不可能,那么运行迁移的最佳做法是什么


我总是可以将它添加到
gcp构建中
,但这将在每次部署中运行。

在GAE中不可能运行独立的脚本/应用,请参见(在python上下文中,但一般的想法适用于所有运行时)

我运行(数据存储)迁移的方式是将迁移脚本本身的功能移植到我的GAE应用程序中受管理保护的处理程序的主体中,我通过对特定URL的HTTP请求触发了该处理程序。我重新做了一些工作,将可能长时间运行的迁移操作拆分为一系列更小的操作(使用推任务队列),这对GAE更加友好。这使我能够一次对一个数据存储实体集的迁移进行现场测试,并且只有在对其操作完全有信心的情况下才能对多个实体集进行测试。也不必担心最终的一致性(我使用查询来确定要迁移的实体)——我只是重复调用迁移,直到没有什么事情可做

迁移完成后,我删除了相应的代码(但保留了处理程序本身以备将来迁移)。作为一个积极的副作用,我在我的存储库的历史记录中记录了迁移历史


可能有兴趣:

这是bizzare。我想这很容易。我甚至想过在
gcp build
中运行
migrate
命令,但是因为它使用的是Docker容器,所以它没有正确的环境变量来执行。☹️