Nest

4552 ワード

imports: [ConfigModule.forRoot({ isGlobal: true })],
providers: [AppService, ConfigService],
このような過程.env.secretを置き換えることができます
サービスでは、関数{}を構築します.
this.configService.get(「secret」)で置き換えることができます
isGlobal:true, load[getEnv]
getEnv=()=>{
return {
DB Password:パスワード
NAME:名前
}
}
これにより、秘密鍵を外部から簡単に処理できます.
外でasyncで包んでaxiosをかぶせばいいです.
'prettier/prettier': ['error', { endOfLine: 'auto' }],
eslintic.jsのルールに入れるとcrlf delete「cr」が失われます
import { Injectable, Logger, NestMiddleware } from '@nestjs/common';
import { NextFunction, Request, Response } from 'express';

@Injectable()
export class LoggerMiddleware implements NestMiddleware {
  private logger = new Logger('Http');

  use(request: Request, response: Response, next: NextFunction): void {
    const { ip, method, originalUrl } = request;
    const userAgent = request.get('user-agent') || '';

    response.on('finish', () => {
      const { statusCode } = response;
      const contentLength = response.get('content-length');
      this.logger.log(
        `${method} ${originalUrl} ${statusCode} ${contentLength} - ${userAgent} ${ip}`,
      );
    });
  }
}
export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer): any {
    consumer.apply(LoggerMiddleware).forRoutes('*');
  }
}
こんな感じで保存
簡単な記録ミドルウェア.this.logger.logまたはLoggerログは既に存在します.
contextを書かないとロガーロゴだとこれlogger.log
ロガー(「Http」)この部分はHttpリクエストが届くと言っているだけです
npmではdebugというパッケージがたくさん使われています.どのプログラムについてログを書きましたか.
ミドルウェアはルータの前で動作するため、起動時にuseragentを受信し、応答する.「≪戻る|Back|emdw≫」が返されるプロセスで処理されます.
implementsセクションを貼り付けるのは、typescriptまたはeditorがエラーを修正するためです.
diの使用はproviderとinjectionが望ましい
結合性を低下させることが望ましい.
{
      provide: AppService,
      useClass: AppService,
    },
これと同じです.提供:一意の鍵です.定数をuseClassに入れることもできます
useFactory: () => {
        return {
          a: 1,
        };
      },
{
      provide: `Custom_Key`,
      useValue: `Custom_Value`,
    },
@Inject('Custom_Key') private readonly customValue,
このようにして中間に自分の値を注入します
jsオブジェクトなどはheapに格納されます.
スタックには呼び出しスタックが含まれます.実行コンテキストなどのコンテンツを格納
使用しない場合は、モニタサービスに直接送信します.
使用後、モンゴメリーdbに格納できます
expressではdiを使う場合もありますが、喫煙が必要なため不完全です.reqも真似する必要がありますが、req真似だけは外して、長所ですが、まだ足りません.
next-nestは比較的便利なプラグインです.1台のサーバのみでは少し便利かもしれません
Type Formはリポジトリロールを提供します.Controller=>service=>repository=>entityなどの構造.
wimstomとlog 4 jを使用してファイルを管理します.pm 2と独立した負荷バランサに接続
dto:Data Transfer Object Expressのボディ解析オブジェクトと同じ
これらはすべてnestが入れたものです
nestの特徴はexport defaultを使用せず、大部分は括弧を使用し、インタフェースとクラスを使用しないことです.Interfaceを使用すると、実行時から飛んでいきます.classを使用するとjsに保持されるように処理されます.
最大限.名を残す
expressはいくつかのdecoratorを貼り付けるだけでapiドキュメントを簡単に作成できます
const config = new DocumentBuilder()
    .setTitle('API')
    .setDescription('API Document')
    .setVersion('1.0')
    .addCookieAuth('connect.sid')
    .build();
  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule.setup('api', app, document);
作成すると、/apiパスのすべてのapiが記録されます.
ブロッキングの代表的な機能はコントローラの後に処理することです
ブロックプログラムの観点に向けたプログラミング.横から見方を変える.汎用重複除外
スプリングによく似た構造
dbを直接インポートする方法:typeorm-model-generatorというnpmパッケージからキャプチャできます.
db関係図を持つエンティティ関係図.E-R図またはERD.存在する関係
  @Column('varchar', { name: 'name', unique: true, length: 30 })
  workspaceName: string;
このように変化することがORMの長所となる.
classベースのTypeormは重複除外の利点がある
不思議です.
一対多、多対一.
many to one
私たちはお互いにルールを作ったほうがいい.関係によって大文字で始まるルールや、複数のルールがあるので、通常は便利です.
@OneToMany(() => Channels, (channels) => channels.Workspace)
ここではchannel、逆にworkspace
    onDelete: 'SET NULL',
    onUpdate: 'CASCADE',
  }
名前のsqlオプションを作成します.
join columnを外部キーの位置に挿入
多くのto multiは1対複数で分かれており、multi to multiにエラーが発生した場合、解決できます.
たくさんのtoがたくさんテーブルの上に置いてある程度?
二つの中に一つ入れるもし私がワークスペースだったら逆方向に置きますエラーが発生した場合は、逆方向に変更できます.
optionにcascadeオプションを追加したほうがいいです.一度に表を更新しましたが、他の表は無理かもしれません.
Erdが作成したサイト
ddlを使用してerdのサイトを作成します.