MySQLにデータベースを作成する

まず、Windows11にいれたMySQLにデータベースを作成する。

net start mysql57

mySQLを立ち上げ、

mysql --user=root --password

でログインする。

次に、下記クエリでデータベースを作成する。

CREATE DATABASE dbName;

を実行する。

Query OK, 1 row affected (0.01 sec)

と出ればデータベースが作成できている。

念のため、

SHOW databases;

上記クエリで確認すればデータベースを一覧で確認できる。

NestJsから接続する

TypeORMをインストールする

SQL および NoSQL データベースと統合するために、Nest は@nestjs/typeormパッケージを提供します。Nest がTypeORMを使用するのは、それが TypeScript で利用できる最も成熟したオブジェクト リレーショナル マッパー (ORM) だからです。TypeScript で記述されているため、Nest フレームワークとうまく統合されます。

ちなみにTypeORMとはnode.jsで実行される、TypeScriptで作ったObject Relational Mapperライブラリのこと。

ちなみにちなみに、Object Relational Mapperライブラリとは、データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法のことらしい。

つまり、いい感じに変換してくれるやつという浅い理解で進めていく。

npm install --save @nestjs/typeorm typeorm mysql2

Appモジュール読み込む

インストールができたら、app.module.tsTypeOrmModuleをインポートする。

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'password',
      database: 'dbName',
      entities: [],
      synchronize: true,
    }),
  ],
})
export class AppModule {}

Entityを作成する

テーブルを作るためにEntityを作成していく。

touch test.entity.ts

Entityファイルをsrc/に作成し、下記コードを記入する。

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class Test {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  firstName: string;

  @Column()
  lastName: string;

  @Column({ default: true })
  isActive: boolean;
}

Appモジュールに知らせる

作成したEntityファイルをapp.module.tsに読み込み、共有する。

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { Test } from './test.entity';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'password',
      database: 'dbName',
      entities: [Test],
      synchronize: true,
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule { }

上記でセーブすると、データベースにテーブルが作成できていることを確認できる。

案外簡単に接続ができた。次はCRUD操作をしていく予定。