Sequelizeを使用して他のデータベースでトランザクションを行う方法


まず、Sequelizeをインストールし、必要なデータベースドライバーをセットアップします。例えば、MySQLデータベースを使用する場合は、以下のようにパッケージをインストールします。

npm install sequelize mysql2

次に、Sequelizeの初期化とデータベースへの接続を行います。以下のようなコード例を参考にしてください。

const { Sequelize } = require('sequelize');
// Sequelizeのインスタンスを作成し、データベースへの接続を確立する
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql', // 使用するデータベースの種類
});
// モデルの定義
const User = sequelize.define('User', {
  name: {
    type: Sequelize.STRING,
    allowNull: false,
  },
  email: {
    type: Sequelize.STRING,
    allowNull: false,
    unique: true,
  },
});
// トランザクションを使用してデータベースの操作を行う
sequelize.transaction(async (transaction) => {
  try {
    // トランザクション内での操作
    await User.create({ name: 'John Doe', email: '[email protected]' }, { transaction });
    await User.update({ name: 'Jane Smith' }, { where: { id: 1 } }, { transaction });

    // コミット
    await transaction.commit();
    console.log('Transaction committed.');
  } catch (error) {
    // ロールバック
    await transaction.rollback();
    console.error('Transaction rolled back:', error);
  }
});

上記のコードでは、Sequelizeのtransactionメソッドを使用してトランザクションを作成し、その中でデータベースの操作を行っています。transactionメソッドはコールバック関数を受け取り、その中でトランザクション内で行いたいデータベースの操作を記述します。操作が正常に完了した場合はcommitメソッドでトランザクションを確定し、エラーが発生した場合はrollbackメソッドでトランザクションを取り消します。

以上が、Sequelizeを使用して他のデータベースでトランザクションを行う方法の概要です。詳細な使用方法や他のオプションについては、Sequelizeの公式ドキュメントを参照してください。