Heroku中的Sequelize迁移

15

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

或者提供一些其他模块的完整示例,并介绍在heroku中使用的最佳实践?

谢谢

4个回答

39

当您通过运行以下命令在本地初始化 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"
  }
}

production object 是你设置 Heroku 生产环境应用程序数据库变量的地方。你可以在命令行中运行以下内容来访问它们:

heroku config --app production-app-name

所有的变量将存储在你设置的 database_url 配置变量中。

当你准备运行迁移时,只需在命令行中输入以下命令:

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

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

使用这个方便的 sequelize 能力,而不是将密码嵌入到文件中:

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

1
谢谢。迁移中不需要使用“-m”。 - Stefano Magistri
1
在执行此操作时,我遇到了 SSL 错误,请问在哪里添加 ssl=true 选项? - pab
2
不幸的是,这意味着每次使用新迁移部署更改时,您都必须运行该命令。 - Carson McManus

5
你可以使用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,
   },
 },
}

这是我们需要使用的完整命令,因为我们有多个环境: “heroku run --app our-app-testing npx sequelize-cli db:migrate”这就是我们使用的命令。由于我们迁移的频率很低,每次都会忘记该命令,因此不太方便。强烈建议将此URL或命令记录在易于记忆的位置。 - Tristan Newman

2
自2019年3月以来,Heroku在每次部署后运行构建npm脚本。为了改进上面的惊人评论,您可以将sequelize迁移添加到其中(位于package.json文件中,在根目录下):
...
"scripts": {
  ...
  "build": "sequelize db:migrate --env production && <other stuff to do before run the app>"
}
...

它对我没起作用 :( - rickster
项目首先构建,然后进行压缩和部署。当您检查部署日志时,可以看到此过程。 - Sisir

0

你有自定义的 Sequelize 配置文件吗?要小心了。在我的情况下,我应该执行以下命令:

heroku run npx sequelize-cli db:migrate --config sequelize-config.js --app your-app --env production


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接