返回
Nest.js 深入浅出:打造 todo-demo (CRUD) 应有之义
后端
2022-11-02 18:58:55
Nest.js 深入浅出教程:从基础到实践
准备工作
踏入 Nest.js 的开发之旅,需要具备以下环境:
- Node.js
- npm
- Nest.js CLI(通过 npm 安装:
npm install -g @nestjs/cli
)
创建项目
使用 Nest.js CLI 创建一个新项目:
nest new todo-demo
项目结构
Nest.js 项目有着清晰的结构:
src
:源代码目录node_modules
:第三方库目录package.json
:项目配置文件.gitignore
:Git 忽略文件
路由设置
Nest.js 采用装饰器定义路由。例如,在 src/app.controller.ts
文件中:
@Controller('todo')
export class AppController {
@Get()
findAll() { ... }
@Post()
create(@Body() body) { ... }
}
数据库交互
Nest.js 集成 TypeORM 用于数据库交互。在 src/app.module.ts
中:
@Module({
imports: [TypeOrmModule.forRoot({ ... })],
})
export class AppModule {}
Docker 部署
为了简化部署,可以使用 Docker。在项目根目录创建 Dockerfile
:
FROM node:16
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]
项目实战
创建 Todo 实体
在 src/todo/todo.entity.ts
中:
@Entity()
export class Todo {
@PrimaryGeneratedColumn()
id: number;
@Column()
title: string;
@Column()
description: string;
@Column()
completed: boolean;
}
创建 Todo 服务
在 src/todo/todo.service.ts
中:
@Injectable()
export class TodoService {
constructor(@InjectRepository(Todo) private todoRepository: Repository<Todo>) {}
async findAll() { ... }
async create(todo: Todo) { ... }
async update(id: number, todo: Todo) { ... }
async delete(id: number) { ... }
}
创建 Todo 控制器
在 src/todo/todo.controller.ts
中:
@Controller('todo')
export class TodoController {
constructor(private todoService: TodoService) {}
@Get()
async findAll() { ... }
@Post()
async create(@Body() todo: Todo) { ... }
@Patch(':id')
async update(@Param('id') id, @Body() todo: Todo) { ... }
@Delete(':id')
async delete(@Param('id') id) { ... }
}
结语
本教程带领你深入浅出地了解 Nest.js 的开发。通过掌握这些技巧,你可以构建自己的 CRUD 应用。有任何疑问或建议,欢迎留言。
常见问题解答
-
为什么选择 Nest.js?
- 模块化、可扩展性、健壮的性能。
-
如何安装 Nest.js CLI?
npm install -g @nestjs/cli
-
如何创建 TypeORM 实体?
- 使用
@Entity()
装饰器。
- 使用
-
如何使用 Docker 部署 Nest.js 项目?
- 创建
Dockerfile
并构建镜像。
- 创建
-
如何为 Todo 实体定义属性?
- 使用
@Column()
装饰器。
- 使用