【问题标题】:How to migrate models in production mode with SailsJS and MongoDB如何使用 SailsJS 和 MongoDB 在生产模式下迁移模型
【发布时间】:2019-08-24 19:28:44
【问题描述】:

我用MVC SailsJS (版本1.1.0) 框架,基于node js 开发了一个Web 应用程序。我在生产模式下发布了它,但每次我从开发到生产发布更新时,我都不知道该怎么做。

这是因为在开发中我可以执行sails lift -alter 命令来独立修改模型并使它们适应新的修改,但是在生产中这个命令被阻止了。

最好的方法是什么?我应该在手动更改集合的 MongoDB 中创建脚本吗?

【问题讨论】:

  • 超级牛逼的问题,我也很好奇。我还没有投入生产,但很快就会投入生产。
  • 我认为这个问题可以扩展到任何数据库,因为这个命令不仅仅针对 MongoDB 被阻止。我正在使用 MySQL,尝试设置 CI/CD 管道,迁移过程非常痛苦。

标签: javascript node.js mongodb sails.js


【解决方案1】:

正如我在 StackOverflow 和其他网站(包括 Sails 官方文档)中所读到的,您必须手动编辑数据库以适应给定的新模型更改:

“您的所有模型的迁移设置都被强制为migrate: 'safe'。这是一种故障保护措施,可防止在部署期间无意中损坏您的生产数据。”来自 Sails 官方文档中的 here

【讨论】:

  • 我已经尝试过这种方式,但是当我 lift 航行时,它会显示如下错误消息:Migration alter is not allowed in production
  • 是为了避免您丢失数据。因此,他们有义务手动更新您的生产数据库模型。如果您想让 Sails 自动更新您的模型,只需像在开发环境中一样运行一次 sails lift,然后像在生产环境中一样使用 --prod 标志。
  • 我不明白如何手动执行此操作,请您解释一下。
  • 至少在我使用 mySQL 的情况下:例如,如果我有模型 Pet 并且我在开发环境中添加属性权重,在我在生产中上传新的 Sails 代码之前,我必须添加新的列权重在 Mysql 中使用 ALTER TABLE 在生产数据库中给定 Sails 不会更新/升级我的数据存储以适应新模型
  • 是的,更好的方法是手动更新数据库结构并使其适应更新的模型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-22
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多