Nodejsでモノトーンオブジェクトを使用してMySQLを処理する


まずモノトーンの対象は何ですか?単色クラスインスタンス?モノトーン?
MVCモードしか知らない...だからまず2つのパターンを比較しましょう...
新しいプロジェクトサーバ構造について、チーム長はMVCモードが今古い方法だと言った.この間プロジェクトをやっていた時はずっとMVCモードで…!相手向けと関係があるというので、もう一度探して整理してみたいと思います.
設計モードは開発ルールと見なすことができます!
MVCモードとは?
まず、よく知られているMVCモードは、アプリケーションを3つの役割に分ける開発方法です.コントローラ、モデル、ビューには3つの基本スケルトンがあります.
  • ユーザ動作(アプリケーションと対話)
  • イベントヘンドラーは
  • コントローラで
  • を実行
  • コントローラモデルへのデータ要求->結果
  • をビューで送信する.
  • ビューは、ユーザにデータを表示する.
  • コントローラは、ユーザーリクエスト(イベント)に合致するデータをモデルに要求し、ビューに渡すイベントハンドラです.
    モデルは、ビューとコントローラを知らず、データに直接関連する論理のみを持つデータベース内のテーブルです.
    ビューとは、モデルを適切な形式でレンダリングするhtmlページです.
    それぞれの役割によって区分され、メンテナンスが容易です.
    うん.なるほど.
    モノトーンモード
    皆さんが一緒に使うプリンタの例を挙げた人がいます.
    プリンタを使用したい人は、それぞれプリンタを作成して使用することはできません.巫女でもない.
    いずれにしても、多くの人がプリンタを共有しているように、プログラムに1つのオブジェクトが1つしか存在しない場合は、プログラムの複数の部分でオブジェクトを呼び出す必要があります.
    オブジェクト・スケジューリングとプロセッサで発生したイベントがある場合は、これらのイベントは同じスケジューリング・キューに入って処理する必要があります.イベントが発生するたびに、スケジューリングキューを個別に作成できますか?
    したがって、モノクロモードは、プログラム内で1つのオブジェクトのみを生成することを保証し、マルチスレッドでオブジェクトを共有して同時にアクセスする際に発生する同期性の問題を解決することができる.
    --
    Javaではモノトーンのパターンをよく使うそうです!
    シングルトーンモードとは、クラスに最初のメモリ(静的)のみを割り当て、メモリにオブジェクトを作成して使用する設計モードです.
    コンストラクション関数を繰り返し呼び出しても、実際に生成されたオブジェクトは最初に生成されたオブジェクトを返します.
    これにより、newを1回作成するだけでオブジェクトを再利用できるため、メモリの無駄を回避できます.モノトーンで生成されるオブジェクトはグローバルインスタンスであるため、他のクラスのインスタンス(すなわち、他のオブジェクト)と容易に共有することができる.
    このため、データベース接続プール(DBPP)のように複数の共通オブジェクトを作成して使用する必要がある場合によく用いられる.今回は私たちのプロジェクトでもデータベースプールをクラスにして、Customメソッドを適用することにしました!
    Androidアプリケーションでは、activityやクラスの主要クラスごとに1つずつ伝達するのが難しいため、どこにでもアクセスできるように単色のクラスに設計しやすい.
    最初のオブジェクトを引き続き使用するため、2回目の使用からオブジェクトをロードする時間が大幅に減少し、パフォーマンスが向上します.
    問題もあります.単一の色調オブジェクトの役割が複雑になったり、データを共有しすぎたりすると、その単一の色調オブジェクトを使用する他のオブジェクト間の結合度が向上し、オブジェクト向けの設計原則に反します.SOLIDの法則の中の閉鎖の原則!そのため、修正が難しくなり、テストも難しくなります.
    また,モノトーンオブジェクトを修正すると,そのオブジェクトを用いた場所でサイドシフトが発生する確率が高いため,マルチスレッド環境では同期処理の問題などが発生する.同期処理を行わない場合...2つのインスタンスを生成するか...
    Nodejsからモノトーン処理DBへ
    まずDBに接続するとき~
    コネクタオブジェクトの作成と書き込みは単一の接続方法であるため、要求されるたびにconnectとdestroyを使用して接続と削除を繰り返します.
    だからね.固定数の接続を事前に作成し、ストレージプールを作成します.(createPool)プール接続は手動で削除する必要がなく、簡単に再利用できます!また、接続制限に遭遇した場合は、接続が成功するのを待つ可能性があります.接着剤で作ったほうが生産性が高い.
    とにかく緒論が長い
    const mysql = require('mysql2')
    
    const poolPromise = mysql.createPool({
      host: process.env.DB_HOST,
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      database: process.env.DB_DATABASE,
    })
    いずれにしても、このpoolオブジェクトは、複数あってもいいですか?もちろんだめですよね?poolオブジェクトから接続を抽出して書き込むには...ここで強調されているのはモノトーンですこのpoolを1つだけ残したいから!
    class DB {
      getPool = () => {
        return new Promise((resolve, reject) => {
         resolve(poolPromise)
        })
      }
      
      // getConnection.. query.. 등등 커스텀 가능
    }
    これは勝手に書いたもので、とにかくこのような方法でクラスを使って、再利用できます!中でやってみます.catchドアも使うし、間違いもハンドルを使うなど...もっと良い例を挙げたいのですが、そうするにはもっと勉強しなければなりません.実は...面倒ハハハ