MongooseによるNESTJSのためのMongoDB移行システムの構築


このチュートリアルは次のようなものです.
  • あなたは、NESTプロジェクトを持っています
  • あなたはMongoDBとマングースを使用している
  • 最近、私は私の不条理ゲームのリファクタリングのビットを行う衝動を持っていた.
    それでも、仕事は進行中です、しかし、私は家が家と名付けられたという事実をもはや耐えませんでした..
    私はすでにあなたを聞くことができる、'ちょうどラベルを1つの注意を表示変更!

    私は、私のコードベースでネーミングの一貫性について気にかけます.家が家であるならば、あなたが知っている次のものは以下です:
    カノンは木の剣になり、オオカミは犬です.
    私はいくつかの時間のオンラインソリューションを探して過ごし、私は最終的に私が好きなものを構築しました.
    私の仕事の結果をあなたにお見せしましょう.
    私は、使用することを選びました migrate ライブラリは、データベースagnostic以来、簡単にアップ/ダウンロジックを提供し、任意のフォームに移行ステータスを格納することができます.
    十分に私について話す、私はこの旅をご案内しましょう.

    インストールマイグレーション


    インストールに行く悪い男!
    npm i --save migrate
    

    あなたの移動を格納するフォルダを作成!


    新しい2つのフォルダがあります.
    mkdir src/migrations
    mkdir src/migrations-utils
    
    最初の1つは更新スクリプトを格納し、秒はいくつかのユーティリティを格納します.
    秒を調べましょう.

    少しのヘルパー


    導入では、migrateはデータベース不可知論者であるとあなたに言いました.
    したがって、少しMongoDBコネクタを書く必要があります.
    import { MongoClient } from 'mongodb';
    import { configs } from '../config/configuration';
    
    const MONGO_URL = configs.mongoUrl;
    
    export const getDb = async () => {
      const client: any = await MongoClient.connect(MONGO_URL, { useUnifiedTopology: true });
      return client.db();
    };
    
    いいね続けましょう.

    migrateはJavaScriptで作られたツールです.
    そして、私たちはtypescriptを使用して、最善のことは、データベースが既に接続された小さなテンプレートを持っています.
    import { getDb } from '../migrations-utils/db';
    
    export const up = async () => {
      const db = await getDb();
      /*
          Code your update script here!
       */
    };
    
    export const down = async () => {
      const db = await getDb();
      /*
          Code you downgrade script here!
       */
    };
    
    何か困ったことがあったts-node/register migrateコマンドラインで.
    この小さなヘルパーは、私の蒸散エラーを解決!
    同じことを!さあ!そうする!
    // eslint-disable-next-line @typescript-eslint/no-var-requires
    const tsNode = require('ts-node');
    module.exports = tsNode.register;
    

    アップデートパッケージ。JSON


    あなたが更新する時間ですpackage.json あなたのプロジェクトのために簡単に将来のスクリプトを使用するように!

    移行ファイルを生成するスクリプト


    この甘い線を加えてくださいpackage.json , スクリプトセクションで!
    "migrate:create": "migrate create --template-file ./src/migrations-utils/template.ts --migrations-dir=\"./src/migrations\" --compiler=\"ts:./src/migrations-utils/ts-compiler.js\"",
    
    --template-file ./src/migrations-utils/template.ts テンプレートファイルを提供します、それは我々がtypescriptレポにある時から、必要なものです.
    また、それを好きなようにブートストラップを移動する簡単な方法を提供します!--migrations-dir=\"./src/migrations\" 移行スクリプトが保存される場所を移動します.
    デフォルトでは、プロジェクトのルートにあります.--compiler=\"ts:./src/migrations-utils/ts-compiler.js\" 入力ファイルの扱い方を説明する.
    さて、このコマンドを実行するだけで、正しいフォルダに空のtypescriptマイグレーションファイルを作成する必要があります!
    npm run migrate:create -- <migration name>
    

    アップグレード用スクリプトと下級用スクリプト


    Aaaaaaa 2つのより多くの線package.json , スクリプトセクションで再び!
    "migrate:up": "migrate --migrations-dir=\"./src/migrations\" --compiler=\"ts:./src/migrations-utils/ts-compiler.js\" up",
    "migrate:down": "migrate --migrations-dir=\"./src/migrations\" --compiler=\"ts:./src/migrations-utils/ts-compiler.js\" down"
    
    新しいオプションはありませんが、すでに説明していますが、さわやかな感じです.--migrations-dir=\"./src/migrations\" あなたの移動を見つけるためにどこに移行するかを伝えます!--compiler=\"ts:./src/migrations-utils/ts-compiler.js\" どのようにスクリプトを処理するかを移動します.
    アップデートスクリプトを実行するには、次の手順に従います.npm run migrate:up またはスクリプトを格下げするnpm run migrate:down

    どのようなときに移動を実行するか?


    migrateはプロジェクトのルートでファイルの移行状態を保存します.
    このファイルはmigrate.json .
    次のようになります.
    {
      "lastRun": "1605197159478-test.ts",
      "migrations": [
        {
          "title": "1605197159478-test.ts",
          "timestamp": 1605197181474
        }
      ]
    }
    
    コミットしないmigrate.json

    質問?



    私はコメントで質問に答えてうれしいです.
    あなたが私の不協和音が好きであるならば、私のコーディング和音に加わることを考えてください!
    ☎️ Webeleon coding lair on discord
    また、私にメールすることができますし、契約を提供する💰
    ✉️ Email me!
    そして、私は素敵な男だから、ここでは、ワーキングサンプルを含んでいるこのサンプルレポを取る!
    🎁 Get the code of the tuto from github

    ドキュメント


  • NestJS
  • Install mongoose with nest
  • Migrate