【heroku】Node.jsからSendGrid経由でメールを発信したい【別問題発生】

投稿者:

はじめに

https://rocky-wildwood-40562.herokuapp.com/

ここまでの話

  1. SendGridを使おうと思ったけれどGmailで済むなら良くないか
  2. 果たしてDockerからはGMailで飛んだ
  3. Dockerからherokuに載せようとしたら→テーブルのカラムが見つからないと言われる
  4. Sequelizeでのmigrationがなんかうまくいってない可能性があった
  5. git push heroku master で更新した筈の内容が heroku run bash で反映されない
  6. 何故?

という具合で一晩無駄にした昨日。
なんとか解決を見た本日、改めて投稿。

git push heroku master で更新した筈の内容が heroku run bash で反映されない

heroku run bashでターミナルを開いた場合は、その時点でのファイル情報しか参照できない。
頻繁に git push heroku master を行う場合は
heroku run sequelize-cli db:migrate を使う。

ただ、migrateを実行してもカラムが追加されない…

https://qiita.com/mitsuhiro_K/items/e32e804e2efc01b41fb5

例によってあまり深読みしないでハマってるクチ。今回は
heroku run sequelize-cli db:migrate:undo:all で削除して
heroku run sequelize-cli db:migrate を走らせ定義を変更する方法を取りました。

そしたら今度はテーブル名がUserなのにuserで検索しに行ったり、
カラム名が createdAt なのに created_at で探しに行ったりする。
以下の定義を記述してやると幸せなんですが、

freezeTableName: true,
underscored: false

src/config/config.js の環境ごとの接続設定のdefineに記述するようです。

module.exports = {
  development: {
    database: "todo",
    username: "root",
    password: "password",
    host: "mysql",
    port: "3306",
    dialect: 'mysql',
    define: {
      underscored: true
    },
  },

さて本懐。アカウント登録→メール発信を対応しようかね…
GMailのログインで叱られた。SendGridを素直に使おう。
…API使おうとしたら401で叱られた。
SMTPで対応して、ダッシュボードで飛んだのを確認。

ん?sequelizeでauto incrementがうまく行ってない?
もしかしてDBサーバはMariaDBなのがいけないか?もう少し調べる。