ノードを学びましょう.JSとのバックエンドを構築する.JSと順序付け


この記事はもともと1967年に出版されましたhttps://www.blog.duomly.com/node-js-course-with-building-a-fintech-banking-app-lesson-1-start-the-project
前の週に、私と私の友人は、2つのコースのために分けられるプロジェクトを構築し始めましたbackend with Golang and frontend with Angular 9 . 一方、我々はあなたにゴランコースの代わりをあなたに与える考えを得て、ノードを使用して同様のバックエンドを構築する方法を示します.js
この記事では巣をセットアップし始める予定です.JGSプロジェクト、PostgreSQLデータベースとの接続と移行を行う.
このコースでは巣を使います.JSは、TypeScriptフレームワーク、ノードの角度の種類です.jsそれは非常に快適で使いやすいので、私の意見では、初心者のための素晴らしい選択です.
それに加えて、我々はデータベースの維持と移動のためのumzugのシーケンシャルを使用します.PostgreSQLデータベースを選択しましたので、プロジェクトを起動するには空の作成を行うことができます.
私は開始するのを待つことができません、しかし、その前に、私は我々が我々のYouTubeチャンネルであなたのためにあなたのためにビデオ版を持っていると常に述べなければなりません.
ノードをつぶしましょう.js!

1 .ノードを起動する必要があります。JSプロジェクト?


あなたがポイント2から私たちと始めることが重要であることを明確にすることから始めましょう.
ノードを作成することができます.あなたがノードを必要とするJSアプリケーション.JSインストール.Here 公式ドキュメントを見てインストーラをダウンロードできます.
必要な2番目の重要なのはPostgreSQLデータベースがインストールされ、このアプリケーションの目的のために作成されます.
もうちょっと役に立つのは、DBeaverのようなデータベースツールです.
すべての準備ができている場合は、本当の楽しみを開始しましょう.

ネストのインストールJS CLIとプロジェクトの作成


初めに巣をインストールしましょう.JS CLIは、新しいプロジェクトを作成するのに役立つでしょう.次のコマンドを使用します.
$ npm i -g @nestjs/cli
準備ができたら、新しいプロジェクトを作ることができます.私は私のプロジェクトのレッスンを1つ呼び出すが、どのようにそれを呼び出す自由に感じる.
$ nest new lesson-one
それが行われたときに新しく作成されたフォルダに移動し、別の必要なパッケージを追加しましょう!

シーケンサとumzugの追加


データベースと移行のために、我々はSequalizeとUMzugを使用しますので、我々は今それらをインストールする必要があります!
では、次のコマンドを実行して、シーケンスをインストールしてスクリプトをシーケンス化します.
$ npm install --save sequelize sequelize-typescript
$ npm install pg
インストールが完了したら、2つの行方不明の依存関係があります.次のコマンドを使いましょう.
$ npm install @types/bluebird
$ npm install @types/validator
もし問題がなかったら、この手順を飛ばしてumzugをインストールし続けてください.
 $ npm install umzug
グレート、それが完了したら、我々はバックエンドを実行し、コーディングを開始することができます.巣を作る.我々が使うJSnest start .

データベースモジュールの作成


我々の新しいフォルダを作成することから始めましょう./src フォルダとそれを呼び出しましょうmodules . あなたがそれをしたとき、そのフォルダの中にdatabase .
./src/modules/database つのファイルを作りましょう.database.module.ts and database.provider.ts そして、プロバイダーから始めましょう.そこに次のコードを加えましょう.
import { Sequelize } from 'sequelize-typescript';

export const databaseProvider = [
  {
    provide: 'SEQUELIZE',
    useFactory: async () => {
      const sequelize = new Sequelize({
        dialect: 'postgres',
        host: <YOUR_HOST>,
        port: 5432,
        username: <YOUR_USERNAME>,
        password: <YOUR_PASSWORD>,
        database: <YOUR_DB_NAME>
      });
      sequelize.addModels([]);
      return sequelize;
    }
  }
]
プレースホルダを変更し、独自のデータベースの資格情報を設定してください.
終わったら開けましょうdatabase.module.ts そして次のようにコードを追加します.
import { Module } from '@nestjs/common';
import { databaseProvider } from './database.provider';

@Module({
  providers: [...databaseProvider],
  exports: [...databaseProvider]
})

export class DatabaseModule { }
グレート、このステップの最後の要素は、データベースモジュールを追加することですapp.module.ts ファイルを開くと、コードがこのように見えるようにしましょう.
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { DatabaseModule } from './modules/database/database.module';

@Module({
  imports: [
    DatabaseModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

5 .移行


さて、移行ファイルを設定します.プロジェクトのルートファイルに行きましょうmigrate.ts ファイル.このファイルの中で、データベースと接続してumzugのインスタンスを設定します.
import { Sequelize } from 'sequelize-typescript';
import Umzug = require('umzug');

const sequelize = new Sequelize({
  dialect: 'postgres',
  host: 'YOUR_HOST',
  port: 5432,
  username: 'YOUR_USERNAME',
  password: 'YOUR_PASSWORD',
  database: 'YOUR_DB_NAME'
});

const umzug = new Umzug({
  storage: 'sequelize',
  storageOptions: { sequelize },
  logging: false,
  migrations: {
    params: [
      sequelize,
      sequelize.constructor,
    ],
    path: './src/migrations',
    pattern: /\.ts$/,
  },
});

const task = (process.argv[2] || '').trim();

switch (task) {
  case 'up':
    umzug.up()
      .then((result) => {
        console.log('Migrations up went successful!', result);
        process.exit(0);
      });
    break;
  case 'down':
    umzug.down()
      .then((result) => {
        console.log('Migrations down went successful!', result);
        process.exit(0);
      });
    break;
  default:
    break;
};
偉大な、今私たちの移動のフォルダを作成する./src フォルダ.新しいフォルダの内部に、データベースに作成したい2つのテーブルの2つのファイルを作成します.彼らを呼びましょう1.1users.ts and 1.2accounts.ts .
最初のファイルでは、up() and down() 関数.次のコードを使用しましょう1.1users.ts ファイル
import * as Sequelize from 'sequelize';

const tableName = 'Users';

export async function up(i: any) {
  const queryInterface = i.getQueryInterface() as Sequelize.QueryInterface;
  queryInterface.createTable(tableName, {
    id: {
      type: Sequelize.INTEGER,
      allowNull: false,
      autoIncrement: true,
      unique: true,
      primaryKey: true,
    },
    Username: {
      type: Sequelize.CHAR(200),
      allowNull: false,
    },
    Email: {
      type: Sequelize.CHAR(50),
      allowNull: false,
    },
    Password: {
      type: Sequelize.CHAR(250),
      allowNull: false,
    },
  });
};

export async function down(i: any) {
  const queryInterface = i.getQueryInterface() as Sequelize.QueryInterface;
  queryInterface.dropTable(tableName);
}
とコード1.2accounts.ts ファイルは非常によく似ています:
import * as Sequelize from 'sequelize';

const tableName = 'Accounts';

export async function up(i: any) {
  const queryInterface = i.getQueryInterface() as Sequelize.QueryInterface;
  queryInterface.createTable(tableName, {
    id: {
      type: Sequelize.INTEGER,
      allowNull: false,
      autoIncrement: true,
      unique: true,
      primaryKey: true,
    },
    Type: {
      type: Sequelize.CHAR(200),
      allowNull: false,
    },
    Name: {
      type: Sequelize.CHAR(200),
      allowNull: false,
    },
    Balance: {
      type: Sequelize.INTEGER,
      allowNull: true,
    },
    UserId: {
      type: Sequelize.INTEGER,
      references: {
        model: 'Users',
        key: 'id',
      },
    },
  });
};

export async function down(i: any) {
  const queryInterface = i.getQueryInterface() as Sequelize.QueryInterface;
  queryInterface.dropTable(tableName);
}
我々はほとんどそこにある、ちょうど1つのステップが完了することです.
開きましょうpackage.json ファイルと新しいコマンドを追加しましょう
"scripts": {
    "migrate": "ts-node ./migrate.ts",
...
}
今、我々は移行を実行する準備が整いました.

6 .移行の実行


移動中の移行はこのレッスンの最後のステップです.コンソールを開き、次のコードを実行して移行を行います.
$ npm run migrate up
終了後は、DBeaverのような任意のデータベースツールでデータベースをチェックすることができますし、ユーザーIDで接続された2つの新しいテーブルが表示されます.
今、あなたは同様に動作を移行する場合は、チェックすることができます.マイグレーションを元に戻すのは、1つずつ動作しますので、2つのテーブルの移行を行う場合は、両方のテーブルを元に戻すには2回移行する必要があります.
マイグレーションを取り消すには、次のコマンドを実行します.
$ npm run migrate down
それが完了したら、あなたのテーブルを元に戻すチェックすることができます.

結論


おめでとう、私たちのノードの最初のレッスンを終えました.JSコース、およびあなたのプロジェクトは、APIを構築する準備ができています.
次のレッスンでは、登録機能を構築します.
あなたが正しくコードを得ることができないならば、あなたはこのレッスンのために我々のGithubリポジトリでそれをチェックすることができます:
https://github.com/Duomly/nodejs-backend-bankapp/tree/Nodejs-Course-Lesson1
私は、あなたが今日得た新しいスキルが好きで、次のレッスンのために我々に加わるでしょう.
ゴングでバックエンドを作りたいなら、ここの私の友人のコースをチェックしてください.
Golang Course
また、ここで確認することができる角度9でこのアプリケーションのフロントエンドを作成している
Angular Course

読んでくれてありがとう.
からのアナ