connect-mysql
實現這個需求,你需要先安裝 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."
}
希望這能幫助到你! 👍