# Windows11に入れたMySQLとNest.Jsを接続し、テーブルを作成する

3 min read
Table of Contents

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操作をしていく予定。

My avatar

Thanks for reading my blog post! Feel free to check out my other posts or contact me via the social links in the footer.


More Posts

Comments