返回
技术文章高效出炉:TypeORM + Mysql 助力 NestJS 博客系统数据持久化
前端
2023-10-24 08:19:57
各位技术爱好者,大家好!我们今天来讨论 NestJS 博客系统的数据持久化,而我们的利器正是 TypeORM 和 Mysql。
NestJS 是一个流行的 Node.js 框架,它以其模块化和可测试性而著称。TypeORM 是一个对象关系映射(ORM)框架,它可以帮助我们轻松地将数据库中的数据映射到 TypeScript 类。而 Mysql 则是大家熟悉的数据库管理系统,它以其稳定性和高性能而闻名。
将这三者结合起来,我们可以轻松地构建一个数据驱动型博客应用程序。
那么,让我们开始吧!
首先,我们需要安装 TypeORM 和 Mysql。您可以使用以下命令:
npm install typeorm mysql
安装完成后,我们需要在项目中创建一个新的 TypeORM 配置文件。这个文件通常命名为 ormconfig.json,它位于项目根目录。在这个文件中,我们需要指定数据库的连接信息。
{
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "root",
"password": "password",
"database": "nestjs_blog",
"entities": ["src/entity/*.ts"],
"synchronize": true
}
在配置好 TypeORM 之后,我们需要创建我们的第一个实体类。实体类代表了数据库中的一个表。在这个例子中,我们将创建一个 Post 实体类,它代表了博客文章。
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";
@Entity()
export class Post {
@PrimaryGeneratedColumn()
id: number;
@Column()
title: string;
@Column()
content: string;
@Column()
author: string;
}
接下来,我们需要创建一个新的服务来管理我们的博客文章。在这个例子中,我们将创建一个 PostService。
import { Injectable } from '@nestjs/common';
import { Repository } from 'typeorm';
import { Post } from './post.entity';
import { InjectRepository } from '@nestjs/typeorm';
@Injectable()
export class PostService {
constructor(
@InjectRepository(Post)
private postRepository: Repository<Post>,
) {}
findAll(): Promise<Post[]> {
return this.postRepository.find();
}
findOne(id: number): Promise<Post> {
return this.postRepository.findOne(id);
}
create(post: Post): Promise<Post> {
return this.postRepository.save(post);
}
update(id: number, post: Post): Promise<Post> {
return this.postRepository.save(post);
}
delete(id: number): Promise<void> {
return this.postRepository.delete(id);
}
}
最后,我们需要创建一个控制器来处理 API 请求。在这个例子中,我们将创建一个 PostController。
import { Controller, Get, Post, Put, Delete, Body, Param } from '@nestjs/common';
import { PostService } from './post.service';
import { Post } from './post.entity';
@Controller('posts')
export class PostController {
constructor(private readonly postService: PostService) {}
@Get()
findAll(): Promise<Post[]> {
return this.postService.findAll();
}
@Get(':id')
findOne(@Param('id') id: number): Promise<Post> {
return this.postService.findOne(id);
}
@Post()
create(@Body() post: Post): Promise<Post> {
return this.postService.create(post);
}
@Put(':id')
update(@Param('id') id: number, @Body() post: Post): Promise<Post> {
return this.postService.update(id, post);
}
@Delete(':id')
delete(@Param('id') id: number): Promise<void> {
return this.postService.delete(id);
}
}
现在,我们已经完成了 NestJS 博客系统的数据持久化部分。我们可以使用以下命令来运行我们的应用程序:
npm start
然后,我们就可以访问 http://localhost:3000 来查看我们的博客系统了。
这就是今天的内容,希望对您有所帮助。如果您有任何问题,请随时留言。