nestjs入门(controller,service,module)

nestjs中比较重要的几个概念controller,module,service,每个nestjs的模块都有以上3个基本文件组成。
module:是用来对外暴露当前模块,以及该模块下需要用到的controller和service都需要在module中引入并注册,最终在app.module中集中引入。
controller:nestjs作为web服务对外暴露请求接口路径,controller就是用来处理这些请求路径的控制器,一个controller对应一个模块模块下有多个具体接口。
service:controller中每个独立请求的具体处理逻辑,每个controller在使用service的时候需要在constructor注入该service。

这里有个小技巧:通过一下nest命令可以直接生成模块对应的完整文件夹以及相应的模板代码其中name是对应的模块名。

nest g resource <name>

基本目录结构如下: 

module
需要用@module装饰器进行装饰

import { Module } from '@nestjs/common';
import { NestjsService } from './nestjs.service';
import { NestjsController } from './nestjs.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { nest } from '../db/modal/nest.entity';
import { GoodsMaterial } from '../db/modal/goods.entity';
import { nesttest } from '../db/modal/nesttest.entity';

@Module({
  controllers: [NestjsController],
  providers: [NestjsService],
  imports: [
    TypeOrmModule.forFeature([GoodsMaterial]),
    TypeOrmModule.forFeature([nest, nesttest], 'nest')
  ],
})
export class NestjsModule {}

controller
需要用@Controller装饰器进行装饰

import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
  Query,
} from '@nestjs/common';
import { NestjsService } from './nestjs.service';

@Controller('nest')
export class NestjsController {
  constructor(private readonly nestjsService: NestjsService) {}

   @Post()
  create(@Body() createNestjDto: any) {
    return this.nestjsService.create();
  }

  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.nestjsService.findOne(+id);
  }

  @Patch(':id')
  update(@Param('id') id: string, @Body() updateNestjDto: any) {
    return this.nestjsService.update(+id);
  }

  @Delete(':id')
  remove(@Param('id') id: string) {
    return this.nestjsService.remove(+id);
  }
}

service
需要用@Injectable装饰器进行装饰,一般在service中进行数据库的操作

import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/sequelize';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { nest } from '../db/modal/nest.entity';
import { nesttest } from '../db/modal/nesttest.entity';
import { GoodsMaterial } from '../db/modal/goods.entity';

@Injectable()
export class NestjsService {
  constructor(
    @InjectRepository(nest, 'nest')
    private nestRepository: Repository<nest>,
    @InjectRepository(nesttest, 'nest')
    private nesttestRepository: Repository<nesttest>,
    @InjectRepository(GoodsMaterial)
    private goodsMaterialRepository: Repository<nest>,
  ) {}
  save(obj: any) {
    return this.nestRepository.save(obj);
  }

  find(id: any) {
    return this.nestRepository.findOne({ where: { id } });
  }

  savetest(obj: any) {
    return this.nesttestRepository.save(obj);
  }

  findtest(id: any) {
    return this.nesttestRepository.findOne({ where: { id } });
  }

  findList() {
    return this.goodsMaterialRepository.find();
  }
}


 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值