ホームページ > ウェブフロントエンド > jsチュートリアル > Sequelize 移行で新しい列を追加する手順

Sequelize 移行で新しい列を追加する手順

DDD
リリース: 2025-01-07 10:37:40
オリジナル
690 人が閲覧しました

Steps to Add a New Column with Sequelize Migrations

ブログ プラットフォームのアップデートで、記事をより視覚的に魅力的にするためにサムネイル画像列を追加する必要がありました。この更新では、すべての記事を 1 つのページに表示することから、各記事を個別のページに表示するように変更され、記事の数が増えるにつれてナビゲーションが改善されました。

サムネイル列には、画像へのリンクを表す文字列が格納されます。このアプローチでは、データベースを軽量に保ち、画像ストレージを別の場所で処理することで懸念を分離します。

モデルへの新しい列の追加

まず、BlogPosts モデルを更新してサムネイル列を含めました。 allowNull: true を設定すると、サムネイルの追加がオプションになり、サムネイルがまだない古い投稿の問題が回避されました:

thumbnail: {
    type: DataTypes.STRING,
    allowNull: true, // Optional for older posts
    },
ログイン後にコピー

しかし、このモデルの変更だけでは十分ではありませんでした。 Postgres データベースは新しい列を認識できず、次のエラーが発生しました:

エラー: 「サムネイル」列が存在しません

これは、Sequelize モデルがアプリケーションがデータベースと対話する方法を定義しますが、データベース スキーマを自動的に変更しないために発生します。これを解決するには、Sequelize 移行を使用する必要がありました。

Sequelize の移行の準備

移行を作成する前に、Sequelize CLI がプロジェクトで初期化されていることを確認しました。 config/ フォルダーと関連セットアップを作成する次のコマンドを実行する前に、必ず最初に「npm install Sequelize-cli

」と入力してインストールしてください。

npx sequelize-cli init

config/ フォルダー内で、config.json の代わりに config.js ファイルを使用することにしました。これにより、設定に dotenv で環境変数を使用できるようになりました。

require('dotenv').config();

module.exports = {
   development: {
       username: process.env.DB_USER,
       password: process.env.DB_PASSWORD,
       database: process.env.DB_NAME,
       host: process.env.DB_HOST,
       dialect: "postgres",
   },
   production: {
       username: process.env.DB_USER,
       password: process.env.DB_PASSWORD,
       database: process.env.DB_NAME,
       host: process.env.DB_HOST,
       dialect: "postgres",
   },
};
ログイン後にコピー

その後、競合を避けるために config.json ファイルを削除しました。

移行ファイルの生成

次に、次のコマンドを使用して、サムネイル列を追加するための移行ファイルを作成しました。

npx sequelize-cli 移行:generate --name add-thumbnail-to-blogposts

これにより、migrations/ フォルダーに次のような名前の新しいファイルが作成されました。

20241206232526-add-thumbnail-to-blogposts.js

このファイルを変更して新しい列を追加しました:

module.exports = {
  up: async (queryInterface, Sequelize) => {
      await queryInterface.addColumn('blogposts', 'thumbnail', {
          type: Sequelize.STRING,
          allowNull: true,
      });
  },

  down: async (queryInterface) => {
      await queryInterface.removeColumn('blogposts', 'thumbnail');
  },
};
ログイン後にコピー

移行の適用

開発データベースを更新するために、次のコマンドを実行しました:

npx sequelize-cli db:移行

これにより、ブログ投稿テーブルにサムネイル列が正常に追加され、各記事の画像リンクを保存できるようになりました。

本番環境への移行の適用

デプロイされたバージョンのデータベースについては、次の手順に従いました。

Backup the Production Database: Before making changes, I downloaded a backup to safeguard against misconfigurations.
Copy the Migration Files: I ensured the updated config.js file and add-thumbnail-to-blogposts.js migration file were present in the server repository.
Set Environment Variables: I verified that the production environment variables required by dotenv were configured correctly. These were set in the Setup Node.js App section of cPanel.
Run the Migration: I navigated to the backend app directory in the production terminal and ran:
ログイン後にコピー

npx sequelize-cli db:merge --envproduction

これにより、実稼働 Postgres データベースにサムネイル列が正常に追加されました。

結論

サムネイル欄の追加により、ブログ記事ごとに画像を表示できるようになり、見た目の美しさと使いやすさが向上しました。これらの手順は、Sequelize 移行を使用してデータベースに新しい列を追加するための構造化された反復可能なアプローチを提供します。これは、モデルとデータベース間の同期を維持するために重要です。

以上がSequelize 移行で新しい列を追加する手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート