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.ts
にTypeOrmModule
をインポートする。
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
操作をしていく予定。