先补充一些nestjs的前置知识
控制器
控制器负责处理传入的请求和向客户端返回响应。
控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有多个路由,不同的路由可以执行不同的操作。
为了创建一个基本的控制器,我们使用类和装饰器。装饰器将类与所需的元数据相关联,并使 Nest 能够创建路由映射(将请求绑定到相应的控制器)。
开始
管理端admin创建users
nest g co -p admin users
nest g mo -p admin users
在user.controller.ts中
import { Controller } from '@nestjs/common';
import { InjectModel } from 'nestjs-typegoose'
import { User } from '@libs/db/models/user.model'
import {Crud} from 'nestjs-mongoose-crud'
import {ApiTags} from '@nestjs/swagger'
//实现crud功能
@Crud({
model: User
})
@Controller('users')
@ApiTags('用户')
export class UsersController {
constructor(@InjectModel(User) private readonly model) { }
}
管理端admin Crud
pnpm add nestjs-mongoose-crud
libs 数据库
由于我们项目分成admin模块和server模块,因此需要对其公共模块进行抽离,以优化我们项目结构。
我们先对数据库进行抽离:
nest g lib db
在src下的db.module.ts,进行数据库链接,引入依赖
yarn add @nestjs-typegoose @typegoose/typegoose
yarn add mongoose @types/mongoose
import {Global, Module} from '@nestjs/common';
import { DbService } from './db.service';
import {TypegooseModule} from "nestjs-typegoose";
import {User} from './models/user.model'
const models = TypegooseModule.forFeature([User])
@Global()
@Module({
imports: [
TypegooseModule.forRoot('mongodb://localhost/topfullstack',{
useNewUrlParser: true,
useUnifiedTopology:true,
useCreateIndex:true,
useFindAndModify:false
}),
models,
],
providers: [DbService],
exports: [DbService,models],
})
export class DbModule {}
执行admin
nest start -w admin
至此,我们完成了User模块的CRUD,并生成了swagger文档