【问题标题】:sequelize migrations in heroku在heroku中续集迁移
【发布时间】:2014-05-03 05:44:20
【问题描述】:

谁能给我一些完整的nodejs迁移续集示例,因为实际文档本身并没有给出如何完成的完整示例。

或者可以给出一些其他可以使用的模块的完整示例以及如何在heroku中使用的最佳实践?

谢谢

【问题讨论】:

    标签: node.js heroku migration sequelize.js


    【解决方案1】:

    当你通过运行在本地初始化 sequelize 时:

    sequelize -i
    

    会创建一个迁移文件夹、配置文件夹和配置文件夹内的 config.json。该 json 文件是您设置应用程序环境的位置。这是一个 config.json 文件的示例。

    {
      "development": {
      "username": "postgres",
      "password": "password",
      "database": "dbname",
      "host": "100.0.0.0",
      "dialect":"postgres",
      "protocol":"postgres",
      "port":"xxxx"
     },
      "staging": {
      "username": "dbusername",
      "password": "dbpassword",
      "database": "db",
      "host": "host",
      "dialect":"postgres",
      "protocol":"postgres",
      "port":"xxxx"
      },
      "production": {
      "username": "dbusername",
      "password": "dbpassword",
      "database": "db",
      "host": "dbhost",
      "dialect":"postgres",
      "protocol":"postgres",
      "port":"xxxx"
      }
    }
    

    生产对象是您设置 heroku 生产应用程序数据库变量的地方。您可以通过在命令行中运行以下命令来访问它们:

    heroku config --app production-app-name
    

    所有变量都将在您设置的 database_url 配置变量中。

    当您准备好运行迁移时,您在命令行中运行的只是:

    heroku run sequelize db:migrate --env production -m --app production-app-name. 
    

    --env 将是您要迁移的 config.json 中的任何数据库对象。

    使用这个方便的续集功能,而不是在文件中嵌入密码:

    "production": {
      "use_env_variable": "DATABASE_URL"
    }
    

    【讨论】:

    • 谢谢。不过,迁移中不需要 -m。
    • 执行此操作时出现 SSL 错误,请问在哪里添加 ssl=true 选项?
    • 不幸的是,这意味着您每次使用新迁移部署更改时都必须运行该命令。
    【解决方案2】:

    Since March 2019, Heroku 在每次部署后运行构建 npm 脚本。改进上面令人惊叹的评论,您可以向它添加 sequelize 迁移(位于 package.json 文件中,位于根目录中):

    ...
    "scripts": {
      ...
      "build": "sequelize db:migrate --env production && <other stuff to do before run the app>"
    }
    ...
    

    【讨论】:

    • 它对我不起作用:(
    【解决方案3】:

    您可以使用 Procfile 并将其放在顶部。

    release: npx sequelize-cli db:migrate
    

    然后您将需要一个 .sequelizerc 文件来定义您的迁移位置。

    对于配置,您可以将其用于 ssl。

    production: {
     use_env_variable: 'DATABASE_URL',
     dialect: 'postgres',
     protocol: 'postgres',
     ssl: true,
     dialectOptions: {
       ssl: {
        require: true,
        rejectUnauthorized: false,
       },
     },
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 2018-01-29
      • 1970-01-01
      相关资源
      最近更新 更多