[Node.js] Sequelize 小常識 (不定時更新這篇)

一般使用 sequelize-cli 前, 必須先執行下列指令做初始化
sequelize init --force

要建立model:

sequelize model:generate --name User --attributes name:string,nickname:string,age:integer
# 會自動產生 createdAt 與 updateAt 的欄位
# 如果是想要產生 created_at, updated_at 的欄位的話
# 可以加入 --underscored 這個參數
sequelize model:generate --name User --attributes name:string,nickname:string,age:integer --underscored


如果需要預設語系是utf8mb4
需要自己修改套件


vim /usr/local/lib/node_modules/sequelize-cli/lib/commands/database.js
# 莫約第38行
# `` 為es6 的 string template 的功能, 超實用
`CREATE DATABASE ${sequelize.getQueryInterface().quoteIdentifier(config.database)} DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci`



之後下  sequelize db:create 就會直接是 utf8mb4 的語系囉


要像 Laravel 這樣可以去addColumn怎使用?
ref: https://stackoverflow.com/questions/46357533/how-to-add-delete-new-columns-in-sequelize-cli

https://sequelize.readthedocs.io/en/latest/docs/migrations/


// 使用此指令建立 migration
sequelize migration:create --name name_of_your_migration
// 產生範例如下
module.exports = {
  up: function(queryInterface, Sequelize) {
    // logic for transforming into the new state
    return queryInterface.addColumn(
      'Todo',             // table name
      'completed',        // column name
      {
        type: Sequelize.BOOLEAN,    // column type,
        after: 'specific_column',   // 指定在某個欄位後
        //before: 'specific_column' // 指定在某個欄位前
    );

  },

  down: function(queryInterface, Sequelize) {
    // logic for reverting the changes
    return queryInterface.removeColumn(
      'Todo',
      'completed'
    );
  }
}

留言

這個網誌中的熱門文章

[MySQL] schema 與資料類型優化

[翻譯] 介紹現代網路負載平衡與代理伺服器