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