NestJSとMongoDB(feat.環境変数とMongose)の接続

3880 ワード

NestはSQL、NoSQLのすべてのデータベースと統合できます.しかしnodejsだけはNoSQLのMongoDBをよく使う.MongoDBはJSONのようなBSONオブジェクトとしてデータを格納します.これは、MongoDBのODMで最も有名なMongooseがnodejs上で働いているためかもしれません.MongoDBはアカウント作成のみで利用したことはありませんが、ちなみに(?)NoSQLを使用してMongoDBに接続するには

ODM?


ODMはObject Documentマッピングの略です.オブジェクトとドキュメントを1対1で一致させることを意味します.ObjectはJavaScriptのオブジェクト、Documentはモンゴメリーのドキュメントです.ODBは、DBでドキュメントを照会すると、JavaScriptオブジェクトにドキュメントを置き換えます.そしてモンゴルのデジタルテレビのODMとして最もよく使われているのがモンゴルです.🐭

🧀 モンゴルインストールとモンゴルDB接続

npm install --save @nestjs/mongoose mongoose
⁝
import { MongooseModule } from '@nestjs/mongoose';

@Module({
  imports: [CatsModule, MongooseModule.forRoot('몽고디비URI')],
⁝
インストールが完了したら、モンゴル語モジュールをapp.moduleにインポートし、モンゴル語ディビURIを追加します.URIを取得する方法は次のとおりです.
  • モンゴディビーclusterアクセス
  • connectクリックボタン
  • クリック
  • Connect your applicationボタン
  • 画像をコピーするuri
  • 🧀 環境変数の設定


    しかし、URIをコピーしてMongooseModule.forRoot('몽고디비URI')に貼り付けると、URIは生成されたアドレスに露出する.URIは露出を防止しなければならないので,環境変数を設定する必要がある.
    環境変数を設定するには、個別のインストールとインポートが必要です.(公式ホームページTECHNIQUESの構成を参照)
    $ npm i --save @nestjs/config
    ⁝
    import { ConfigModule } from '@nestjs/config';
    
    @Module({
      imports: [ ConfigModule.forRoot(), MongooseModule.forRoot('몽고디비URI')]
    ⁝
    インストールとインポートが完了したら、環境変数管理ファイル.envを使用できます..envファイルは、プロジェクトフォルダの最上位ルートディレクトリに作成できます.先ほどコピーしたモンゴディヴィURI値を生成したファイルにMONGODB_URI = "복사했던 몽고디비 URI 값"として保存します.
    生URIを含むapp.moduleファイルのMongooseModule.forRoot('몽고디비URI')'몽고디비URI'部分をprocess.env.MONGODB_URIに変更します.1番目のパラメータの設定が完了すると、2番目のパラメータが追加されます.
    完成したコードから見ると、以下のようになります.
    ⁝
    @Module({
      imports: [
        ConfigModule.forRoot(),
        MongooseModule.forRoot(process.env.MONGODB_URI, {
          useNewUrlParser: true,	// 몽구스에서 필요로 하는 두 번째 인자 -1
          useUnifiedTopology: true,	// 몽구스에서 필요로 하는 두 번째 인자 -2	
        }),
        CatsModule,
      ],
      controllers: [AppController],
      providers: [AppService],
    })
      ⁝
    モンゴディビURIのほか、ポート番号などを環境変数に入れて管理することもできます.mainで使用するポート番号を.envに設定してみます.
    async function bootstrap() {
      const app = await NestFactory.create(AppModule);
      app.useGlobalFilters(new HttpExceptionFilter());
      const PORT = process.env.PORT; // .env에 저장된 포트 넘버
      await app.listen(PORT);
    }

    🧀 コンソールの蒙昧クエリー出力の設定


    開発時にモンゴルの照会を記録することができます.app.moduleファイルでは、モンゴルをimport * as mongoose from 'mongoose';にインポートします.次に、AppModuleクラスからエクスポートされたコードmongoose.set('debug', true)を記述する.これでクエリーが記録されます.
    ただし、本番導入時にログは必要ありません.環境変数を使用して、開発モデルと生産モデルを区別します..envにはMODE = 'dev'に区切られたコードが記述されている.
    再びapp.moduleに移動し、3つの条件演算子を使用して、processe.env.MODEが「dev」の場合にのみログが撮影されることを確認します.完了したクラスコードと印刷のクエリーを以下に示します.
    export class AppModule implements NestModule {
      private readonly idDev: boolean = process.env.MODE === 'dev' ? true : false;
      configure(consumer: MiddlewareConsumer) {
        consumer.apply(LoggerMiddleware).forRoutes('*');
        mongoose.set('debug', this.idDev);
      }
    }
    // 찍힌 쿼리 적기
    開発時true,そうでなければfalseはクエリーできません.
    に感銘を与える
    位置決めを整理するとともに,環境変数の使用理由を理解できる.暴露できない重要な情報を環境変数に入れる.
    モンゴデビを接続する場合、モンゴス検索を表示する設定はapp.moduleに関連しています..envで環境変数を設定し、app.moduleに移動します.