Go LangでWebAPIを作成するために、GolangでMySQLに接続する

HeidiSQLでSQLを実行する 次に、Go LangでWebAPIを作成するために、まずはDockerでMySQLを構築するで作ったMySQLにデータベースを作成する。HeidiSQLから作成しようとするが、 SQL 0A80E90FC (1044): Access denied for user 'your_username'@'%' to database 'project'uery という権限エラーが出るようになった。 version: '3' services: mysql: image: mysql:latest container_name: project environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: project MYSQL_USER: username MYSQL_PASSWORD: password ports: , "3306:3306" volumes: - ./data:/var/lib/mysql に変更したらできた。ちょっと理由はわからない。 で、projectというデータベースでSQLを実行する。 CREATE TABLE sample ( id INT AUTO_INCREMENT PRIMARY KEY, firstName VARCHAR(255), lastName VARCHAR(255), isActive BOOLEAN DEFAULT TRUE ); これでSampleのテーブルを作成することが出来た。 GoLangでテーブルを作成する 次にGORMをインストールする。 go get -u gorm.io/gorm go get -u gorm.io/driver/sqlite を実行すると、...

投稿日 · 2023-12-02 · 更新日 · 2024-06-07 · 1 分 · nove-b

Go LangでWebAPIを作成するために、まずはDockerでMySQLを構築する

普段フロントエンドをメインとしているので、バックエンドの環境構築に疎い。 今まではFirebaseを使用することが多く、前回はじめてNestJSで本格的にバックエンドの構築をした。 とは言えNestJSはJavascriptである。 Windows11に入れたMySQLとNest.Jsを接続し、テーブルを作成する 難しかったけど、新しいことに挑戦した感じがしなかった。 しかもその時、とにかく早く実装したかったので、MySQLをWindowsにインストールしたうえでテストしていた。 実際の案件ではそんなことありえないので、しっかりDockerで環境を構築し、言語はGo Langを採用することにした。 まずはDockerでMySQLを構築する docker-compose.yaml を作成する version: '3' services: mysql: image: mysql:latest container_name: my-mysql-container environment: MYSQL_ROOT_PASSWORD: your_root_password MYSQL_DATABASE: your_database_name MYSQL_USER: your_username MYSQL_PASSWORD: your_password ports: , "3306:3306" volumes: - ./data:/var/lib/mysql で、docker-compose up -dを実行する。 error during connect: this error may indicate that the docker daemon is not running: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.project%3Dproject-backend%22%3Atrue%7D%7D": open //./pipe/docker_engine: The system cannot find the file specified. というエラーが出た。 よく分からないけど、Dockerが起動していないことが原因のようなので、Start-Service dockerコマンドを入力しろとGPTに教えてもらったが、 'Start-Service' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 というエラーが出た。...

投稿日 · 2023-12-01 · 更新日 · 2024-06-07 · 1 分 · nove-b

NestJSでMySQLと接続するモジュールを外部化し環境変数にする

環境変数化とDB接続のモジュール化 綺麗にって漠然と書いたが、 環境変数化 DB接続のモジュール作成 を行っていく。 DB接続のモジュール作成 まずは外部モジュール化する。 nest g mo database で、データ接続用のモジュールを作成する。 import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; @Module({ imports: [ TypeOrmModule.forRootAsync({ useFactory: () => ({ type: 'mysql', host: 'localhost', port: 3306, username: 'username', password: 'password', database: 'database-name', entities: [], synchronize: true, }), }), ], }) export class DatabaseModule { } 次に、app.module.tsの方を編集する。 @Module({ imports: [ DatabaseModule, ], 設定をべたでimportしていたので、それを外部モジュールに変換する。 これで外部化は完了。 環境変数化 次に環境変数化していく。 npm install @nestjs/config で、環境変数から読み込むためのパッケージをインストールする。...

投稿日 · 2023-04-19 · 更新日 · 2024-06-07 · 1 分 · nove-b

NestJsとMySQLでCRUD操作を行ってみた

前回の修正と準備 前回testというEntityを作ったけど、わかりにくくなるのでsampleに変更した。 モジュールの作成 npx nest g module sample まず上記コマンドを使用し、モジュールを作る。なぜモジュール化するかを調べると散らかるので、また別の機会に。 公式ドキュメントに 対応するモジュール ディレクトリ内のドメインの近くに作成することをお勧めします。 と記載されているので、sample.entity.tsを作成したサンプルモジュール内に移行する。 必要なファイルを作成する npx nest g controller sample --no-spec npx nest g service sample --no-spec controllerとserviceを作成する。 controllerはルーティングを指定し、serviceは処理の記述を書くファイルという認識。 最後に、DBと疎通操作するためのRepositoryを作成する。なぜか作成するコマンドが用意されていないようなので、自作する。 cd src/sample touch sample.repository.ts 各ファイルを作成する sample.repository.ts リポジトリはEntityManagerと同じですが、その操作は具象エンティティに限定されます。EntityManagerを介してリポジトリにアクセスすることができます。 上記を読んでもなんのことかわからない。 import { Injectable } from '@nestjs/common'; import { Sample } from 'src/sample/sample.entity'; import { Repository } from 'typeorm'; import { InjectRepository } from '@nestjs/typeorm'; @Injectable() export class SampleRepository extends Repository<Sample> { constructor(@InjectRepository(Sample) repository: Repository<Sample>) { super(repository....

投稿日 · 2023-03-15 · 更新日 · 2024-06-07 · 2 分 · nove-b

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

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....

投稿日 · 2023-03-05 · 更新日 · 2024-06-07 · 1 分 · nove-b