5 分鐘用 NestJs 接上 mysql

閱讀時間約 8 分鐘
raw-image
實現這個需求,你需要先安裝 Node.js 和 Nest.js 框架,並確保你已經安裝了 MySQL 數據庫。


首先,創建一個新的 Nest.js 項目:

$ npm i -g @nestjs/cli
$ nest new blog-backend


然後,進入項目目錄並安裝相關的依賴:

$ cd blog-backend
$ npm install mysql2 nestjs-typeorm typeorm


接下來,創建一個 `Post` 實體,用於映射到數據庫中的 `posts` 表:

$ nest generate class post/entity/post


post.entity.ts 文件中,定義 `Post` 實體的屬性和數據庫映射:

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

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

@Column()
title: string;

@Column()
content: string;
}


接下來,創建一個 `PostService` 服務,用於處理與 `Post` 實體相關的業務邏輯:

$ nest generate service post/service/post


post.service.ts 文件中,實現一些基本的 CRUD 方法:

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Post } from '../entity/post';

@Injectable()
export class PostService {
constructor(
@InjectRepository(Post)
private postRepository: Repository<Post>,
) {}

async findAll(): Promise<Post[]> {
return this.postRepository.find();
}

async create(post: Post): Promise<Post> {
return this.postRepository.save(post);
}

async update(id: number, post: Post): Promise<Post> {
await this.postRepository.update(id, post);
return this.postRepository.findOne(id);
}

async delete(id: number): Promise<void> {
await this.postRepository.delete(id);
}
}


然後,創建一個 `PostController` 控制器,用於處理與 `Post` 相關的 HTTP 請求:

$ nest generate controller post/controller/post


post.controller.ts 文件中,實現一些基本的路由處理方法:

import { Controller, Get, Post, Put, Delete, Body, Param } from '@nestjs/common';
import { PostService } from '../service/post.service';
import { Post as PostEntity } from '../entity/post';

@Controller('posts')
export class PostController {
constructor(private postService: PostService) {}

@Get()
async findAll(): Promise<PostEntity[]> {
return this.postService.findAll();
}

@Post()
async create(@Body() post: PostEntity): Promise<PostEntity> {
return this.postService.create(post);
}

@Put(':id')
async update(@Param('id') id: number, @Body() post: PostEntity): Promise<PostEntity> {
return this.postService.update(id, post);
}

@Delete(':id')
async delete(@Param('id') id: number): Promise<void> {
return this.postService.delete(id);
}
}


最後,配置數據庫連接,編輯 `src/app.module.ts` 文件:

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Connection } from 'typeorm';
import { Post } from './post/entity/post';
import { PostService } from './post/service/post.service';
import { PostController } from './post/controller/post.controller';

@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'your_username',
password: 'your_password',
database: 'your_database_name',
entities: [Post],
synchronize: true,
}),
TypeOrmModule.forFeature([Post]),
],
controllers: [PostController],
providers: [PostService],
})
export class AppModule {
constructor(private connection: Connection) {}
}


現在,你可以運行項目:

$ npm run start


項目運行後,你可以使用 Postman 或其他 HTTP 客戶端工具來測試接口。例如,你可以使用以下請求來創建一個新的博客文章:

POST /posts
Content-Type: application/json

{
"title": "Hello World",
"content": "This is my first blog post."
}


希望這能幫助到你! 👍

    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    Thomas Chu 的沙龍 的其他內容
    在開發 email 的過程,一定會有要寄信的需要,這時候 google script 可以快速的幫忙這段,透過簡單的 code 就可以完成
    在開發 email 的過程,一定會有要寄信的需要,這時候 google script 可以快速的幫忙這段,透過簡單的 code 就可以完成
    你可能也想看
    Google News 追蹤
    Thumbnail
    ※ Express串接MySQL相關套件介紹 ★ Express 資料庫設定套件,mysqljs和 mysql2比較 相同點:都是讓 Node.js 能使用 MySQL 的套件 (package)。安裝之後我們就能在 Node.js application 裡使用 SQL 指令,操作 SQL
    ※ 補充說明: ※ npm 常用指令: ◦ npm init–y:快速初始化一個新的 Node.js 並建立一個 package.json 文件的命令。 ◦ npm info 套件名稱 version:快速查詢指定 npm 套件的最新版本號。 ◦ npm install套件名稱:用來安裝
    Thumbnail
    Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
    Thumbnail
    本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
    Thumbnail
    上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
    Thumbnail
    本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
    Thumbnail
    Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
    Thumbnail
    登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
    ※ MySQL是什麼? MySQL是一種開源(免費)的關聯式資料庫管理系統,所以任何人都可以免費使用,是Web開發中最常用的資料庫之一。MySQL 會將資料儲存在由資料列與資料欄組成的資料表中。使用者可使用結構化查詢語言 (通常稱為 SQL) 來定義、操控、控管及查詢資料。  簡單來說,資料
    ※ Express 專案步驟筆記清單 Node.js 環境建置核對 新增專案資料夾 設定 package.json npm init -y 設定程式入口為 app.js 安裝 Express:npm install express 設定主程式 app.js 建構應用程式伺服器 設定
    Thumbnail
    ※ Express串接MySQL相關套件介紹 ★ Express 資料庫設定套件,mysqljs和 mysql2比較 相同點:都是讓 Node.js 能使用 MySQL 的套件 (package)。安裝之後我們就能在 Node.js application 裡使用 SQL 指令,操作 SQL
    ※ 補充說明: ※ npm 常用指令: ◦ npm init–y:快速初始化一個新的 Node.js 並建立一個 package.json 文件的命令。 ◦ npm info 套件名稱 version:快速查詢指定 npm 套件的最新版本號。 ◦ npm install套件名稱:用來安裝
    Thumbnail
    Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
    Thumbnail
    本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
    Thumbnail
    上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
    Thumbnail
    本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
    Thumbnail
    Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
    Thumbnail
    登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
    ※ MySQL是什麼? MySQL是一種開源(免費)的關聯式資料庫管理系統,所以任何人都可以免費使用,是Web開發中最常用的資料庫之一。MySQL 會將資料儲存在由資料列與資料欄組成的資料表中。使用者可使用結構化查詢語言 (通常稱為 SQL) 來定義、操控、控管及查詢資料。  簡單來說,資料
    ※ Express 專案步驟筆記清單 Node.js 環境建置核對 新增專案資料夾 設定 package.json npm init -y 設定程式入口為 app.js 安裝 Express:npm install express 設定主程式 app.js 建構應用程式伺服器 設定