【nestjs+mongodb】- 后端搭建和数据库抽离

github代码

GitHub仓库地址
需要的可以git clone,喜欢的可以点个star

思路

先补充一些nestjs的前置知识

控制器

控制器负责处理传入的请求和向客户端返回响应。

控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有多个路由,不同的路由可以执行不同的操作。

为了创建一个基本的控制器,我们使用类和装饰器。装饰器将类与所需的元数据相关联,并使 Nest 能够创建路由映射(将请求绑定到相应的控制器)。

开始

1.管理端admin创建users

nest g co -p admin users
nest g mo -p admin users

在user.controller.ts中,我们需要用到用户模型(model),因此需要在控制器注入模型

constructor(@InjectModel(User) private readonly model) { }

实现

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) { }
}

2.管理端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 {}

3.执行admin

nest start -w admin

至此,我们完成了User模块的CRUD,并生成了swagger文档
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值