TIL 21.06.24


今日やったこと
mvc設計モードに基づいてsequelize(ORM)を使用
要求に従ってデータベース処理タスクが実行されました.
これは以前のようにtodoを埋める方法ではありません.
コントローラファイルを直接下部から作成します.
Achievement goals
  • パケットORM,1:1.1:N,N:N関係を表すことができる.
  • クランプで知る事実
  • を整理する.
    design pattren
    ここでの設計パターンとは「ソフトウェアエンジニアリング」の概念を指す.
    設計モード(Design pattern)はプログラム開発時によく遭遇する困難であり,状況に対する一般的で再利用可能な抽象的な解決策である.
    今回学んだmvcモードに比べて、以前もデザインモードを学んだことがあります.
    反応器の一方向データストリームや反応器のFluxモードも設計モードの一部だそうです.
    module.exports & require
    splitの実行中に、下部からcontrollerファイルの作成を開始するとmoduleになります.exportsとrequireについて詳しく知らなかったので、情報を再検索しました.
    プログラミングでは、モジュールは独立して再利用可能で、外部の影響を受けないコードの集合である.

  • require()関数はmoduleです.輸出を回収する.(外部モジュールをインポートします.)
    パラメータに入る値にパスを設定しないと、NodeJS自体のライブラリにモジュールが見つかります.

  • module.exportsは、エクスポートするファイルのコードをモジュールに分けます.exportsのオブジェクトに定義されたプログラム.
    モジュールは、外部ファイルからファイルをインポートするために使用されます.輸出に代入しなければならない.
  • 移行モデルの違い
    移行は、適用されていない設定値を実際のデータベースに反映します.
    モデルはsqlをオブジェクト向けのフォーマットで可能にする
    Redirections
    直接指示は、その名の通り再指示です.
    これは、ユーザが要求したページではなく、他のページまたはサーバに接続するようにユーザを導く技術である.
    例えば、https://bitly.com/は、複雑なurlをurlに簡略化するサービスを提供する.
    https://www.instagram.com/james.7507/は私のInstagramサイトです.
    これを短縮したhttps://bit.ly/3gQNW2Yも接続可能である.
    ユーザがhttps://bit.ly/3gQNW2Yを入力すると、ユーザはhttps://www.instagram.com/james.7507/に導かれる.
    最初に要求を受信したWebサーバは、HTTP応答ステータスコードに302を送信し、応答メッセージヘッダに位置値にリダイレクトする必要があるアドレスを設定して返信する.
    別に知っている事実
    デフォルトでは、テーブル名が指定されていない場合、Sequeizeは自動的にモデル名を複数にし、テーブル名として使用します.
    SequeizeによるSchemaの実装
    (関連を使用してJoin Tableを実施)
  • 新しいモデルと移行を作成します.(users)
  • モデルの作成時に移行ファイル
  • が自動的に作成されます.
    npx sequelize-cli model:generate --name user --attributes name:string
  • urlsテーブルにコラムを追加するには、
    マイグレーションスカラーファイル
  • の作成
    npx sequelize-cli migration:generate --name add_userid
  • skeletonファイルを生成すると、upとdown関数を持つオブジェクトが内部に存在します.
  • up:移行コマンドの実行npx sequelize-cli db:migrateを運転すると、
    実行される関数で、内部で必要なクエリー文を記述します.
    down:移行元に戻すコマンドnpx sequelize-cli db:migrate:undoを運転すると、
    実行される関数で、upに追加された内容を削除するために内部にクエリー文が作成されます.
  • スカラーファイルから列を追加し、外部キー
  • を接続する.
    QueryInterface、設定するオブジェクト、クラス(内部に複数のメソッドがあります)
    コラムの追加/(表、追加するコラム名、タイプ)
    await queryInterface.addColumn('urls', 'userId', Sequelize.INTEGER );
    なぜ接続するのか
    await queryInterface.addConstraint('urls', {
          fields: ['userId'],
          type: 'foreign key',
          name: 'FK_user',
          references: {
            table: 'users',
            field: 'id'
          },
          onDelete: 'cascade',
          onUpdate: 'cascade'
        });
    onDelete,onUpdate->更新を削除するときに、ラッチ接続を使用するデータがどのように相互作用するかを定義します.
    カスケードは連鎖作用を意味する
    関連付けを使用したJoin Tableの実装
    モデルのインデックス.jsで実現します.
    西クオリティのmodelsオブジェクトで設定したモデル名はキー値です.
    構造分解を各変数に割り当てます.
    例えば、n:1の場合
    n belongsTo(1);
    1 hasMany(n);
    const {url, user} = sequelize.models;
    url.belongsTo(user);
    user.hasMany(url);
    コメントサイト
    https://dololak.tistory.com/147
    https://shoark7.github.io/programming/knowledge/what-is-design-pattern
    https://medium.com/@chullino/require-exports-module-exports-%EA%B3%B5%EC%8B%9D%EB%AC%B8%EC%84%9C%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1d024ec5aca3