Sequelize migrations typescript 版本

Sequelize 官方是使用 JavaScript,Migrations 也是使用 js, 這篇介紹 TypeScript 版本的 Sequelize Migrations, 透過 actionhero/ah-sequelize-plugin 使用,有可能跟原生 Sequelize 有差異。

Migrations with typescript

基本的範例,使用 QueryInterface 型別加上 DataTypes 定義,支援 async / await。

import { QueryInterface, DataTypes } from "sequelize";

const tableName = "customer";
const columnName = "email";

module.exports = {
  up: async (queryInterface: QueryInterface) => {
    await queryInterface.addColumn(tableName, columnName, {
      allowNull: false,
      type: DataTypes.STRING,
    });
  },

  down: async (queryInterface: QueryInterface) => {
    return queryInterface.removeColumn(tableName, columnName);
  },
};

Raw query

在 migrations 也可以使用 Raw query,透過 QueryInterface 取得 sequelize 即可。

import { QueryInterface, DataTypes } from "sequelize";

module.exports = {
  up: async (queryInterface: QueryInterface) => {

    const sql = `
UPDATE customer
  SET email="[email protected]"
  WHERE customer_id=1;
`;

    queryInterface.sequelize.query(sql);
  },

  ...
};

留言