[TIL] MVC(Model-View-Controller) & ORM


MVC(Model-View-Controller)



Model–view–controller (usually known as MVC) is a software design pattern commonly used for developing user interfaces that divides the related program logic into three interconnected elements.
mvcはソフトウェア実行の設計モードと見なすことができる.

Controller
ユーザがアクセスするURLに基づいてユーザの要求を決定し、その要求に合致するデータをモデルに委任し、ビューにデータを反映してユーザに通知する.
Model
通常、CIのモデルはデータベーステーブルに対応します.たとえば、Topicという名前のテーブルはtopicモデルというモデルを作成します.しかし,この関係は強制的ではないため,ルールを一貫して定義する必要がある.
View
Viewはクライアント技術html/css/javascriptのコンテナです.
  • モデルはデータベースに接続されており、データを交換できます.
  • ビューユーザに提供されるロール(UI)
  • コントローラは、ビューで発生した動作とイベントの入力値を有し、加工後にモデルに値を渡して更新および処理を行う.値を戻し直すと、データが再加工され、ビューに渡されて表示されます.
  • リファレンス
    https://www.youtube.com/watch?v=Rr6lHwzgvOI

    ORM


    Object–relational mapping(ORM, O/RM, and O/R mapping tool) in computer science is a programming technique for converting data between incompatible type systems using object-oriented programming languages.
    簡単に言えば、オブジェクトとリレーショナル・データベース間のプログラミング言語の観点から協力した翻訳者と考えられる.

    リファレンス
    https://sequelize.org/master/index.html
    Sequelize is a promise-based Node.js ORM for Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server. It features solid transaction support, relations, eager and lazy loading, read replication and more.
    -> Node.js ORM
    npmインストール
    npm install --save sequelize //최신버전 v6
    リファレンス
    https://sequelize.org/master/manual/migrations.html
    Just like you use version control systems such as Git to manage changes in your source code, you can use migrations to keep track of changes to the database. With migrations you can transfer your existing database into another state and vice versa: Those state transitions are saved in migration files, which describe how to get to the new state and how to revert the changes in order to get back to the old state.
    ->データベースへの変更を追跡します(スキーマの変更に伴ってデータが移行することを示します).
    モードが変更されるたびに、移行を実行する必要があります.
    To install the Sequelize CLI:
    npm install --save-dev sequelize-cli
    To create an empty project you will need to execute init command
    CLIを介してORMを使用するように起動する必要があります(プロジェクトの初期フェーズの自動設定を支援します).
    npx sequelize-cli init
    Siqualize CLI公式文書(コマンドなど)
    https://github.com/sequelize/cli
  • config, contains config file, which tells CLI how to connect with database
  • models, contains all models for your project
  • migrations, contains all migration files
  • seeders, contains all seed files
  • 4つのファイルが生成されます.
    {
      "development": {
        "username": "root",
        "password": null,
        "database": "database_development",
        "host": "127.0.0.1",
        "dialect": "mysql"
      },
      "test": {
        "username": "root",
        "password": null,
        "database": "database_test",
        "host": "127.0.0.1",
        "dialect": "mysql"
      },
      "production": {
        "username": "root",
        "password": null,
        "database": "database_production",
        "host": "127.0.0.1",
        "dialect": "mysql"
      }
    }
    生成されたjsonコンテンツでは、database developmentセクションは基本的にmysqlに書き込まれる環境です.
    Once you have properly configured CLI config file you are ready to create your first migration. It's as simple as executing a simple command.
    name: the name of the model;
    attributes: the list of model attributes.
    npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
    必要なオプション値に設定できます.
    npx sequelize-cli model:generate --name url --attributes title:string,visits:string,email:string
    This will:
    Create a model file user in models folder;
    Create a migration file with name like XXXXXXXXXXXXXX-create-user.js in migrations folder.
    Note: Sequelize will only use Model files, it's the table representation. On the other hand, the migration file is a change in that model or more specifically that table, used by CLI. Treat migrations like a commit or a log for some change in database.
    モデルファイルは、モデルファイルにのみ書き込まれるテーブル表示であり、移行によって生成される内容はCliに対する変更です.
    we haven't inserted anything into the database. We have just created required model and migration files for our first model User. Now to actually create that table in database you need to run db:migrate command.
    実際のテーブルにデータベースを作成するには、db:migrateを実行する必要があります.
    npx sequelize-cli db:migrate
    node.jsは、requestというライブラリを使用してHTTPリクエストを発行します.同様のライブラリにはaxios、node-fetchなどがあります.node.js内蔵httpモジュールとhttpsモジュールは、直接実装に使用できます.
    request
    https://github.com/request/request
    axios
    https://github.com/axios/axios
    node-fetch
    https://github.com/node-fetch/node-fetch
    整理されたブログ
    https://medium.com/graphql-seoul/%EB%B2%88%EC%97%AD-%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98%EA%B3%BC-sequelize-cli-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC-3926c0a9eae6
    https://velog.io/@dlrbwls0302/TIL-SequelizeShortly-mvc-%EC%BD%94%EB%93%9C-%EB%B6%84%EC%84%9D
    学ぶべきこと
    生活コードmvc部分のビデオチュートリアルを見る
    https://opentutorials.org/module/327/3828