Table of Contents
MySQLにデータベースを作成する
まず、Windows11にいれたMySQLにデータベースを作成する。
net start mysql57mySQLを立ち上げ、
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 mysql2Appモジュール読み込む
インストールができたら、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操作をしていく予定。