nest学习摘要(2)

nest提供者

js 复制代码
app.model 自定义名称
// 导入NestJS的Module装饰器,用于定义模块
import { Module } from '@nestjs/common';
// 导入应用控制器,负责处理HTTP请求
import { AppController } from './app.controller';
// 导入应用服务,负责业务逻辑处理
import { AppService } from './app.service';
import { AppService2 } from './app.service2';
import { UserModule } from './user/user.module';

/**
 * 应用根模块 - 整个应用的核心配置
 * 就像房子的设计图纸,定义了整个应用的结构
 * 
 * @Module装饰器告诉NestJS这是一个模块
 * 模块是组织代码的基本单位,把相关功能组合在一起
 */
@Module({
  imports: [UserModule],             
  )
  controllers: [AppController],  // 控制器数组 - 处理HTTP请求的地方,就像餐厅的服务员
  providers: [{
    provide: "abc", //这里是自定义名称
    useClass: AppService
  }, //下面的对象是自定义传值
  {
    provide: "test",  
    useValue: ['1', '2', '3']
  },
    {                        //这里可以做一些异步操作,注入使用其他的服务
      provide: "ccc",
      inject: [AppService2],
      async useFactory(AppService2) {
        return await new Promise((R) => {
          setTimeout(() => {
            R(AppService2.getHello())
          }, 5000)
        })
      }
    }
  ],
})
export class AppModule {

}

另一个controller文件是这样使用的

js 复制代码
// 导入NestJS的Controller和Get装饰器
import { Controller, Get, Inject } from '@nestjs/common';
// 导入应用服务,获取业务逻辑
import { AppService } from './app.service';

/**
 * 应用控制器 - 负责处理HTTP请求
 * 就像餐厅的服务员,接待客人并处理他们的需求
 * 
 * @Controller('get') 表示这个控制器处理所有以 /get 开头的路由
 * 比如:/get/a, /get/user 等等
 */
@Controller('get')
export class AppController {
  /**
   * 构造函数 - 依赖注入
   * 这里自动注入了AppService,就像给服务员配备了厨师
   * private readonly 表示这个属性是私有的且只读的
   */
  constructor(@Inject("abc") private readonly appService: AppService,
    @Inject("test") private readonly abc: string,
    @Inject("ccc") private readonly ccc) { } //

  /**
   * 处理 GET 请求的方法
   */
  @Get('a')
  getHello(): string {
    // 调用AppService的getHello方法获取数据
    console.log(this.ccc);

    return this.ccc;
  }

}

那比如我App想调用user模块的服务,该如何操作呢?

js 复制代码
//1.首先在user的model里exports:['userService']

import { Module } from '@nestjs/common';
import { UserService } from './user.service';
import { UserController } from './user.controller';

@Module({
  controllers: [UserController],
  providers: [UserService],
  exports:[UserService]
})
export class UserModule {}

//2.然后就可以在app.controller里使用了
import { UserService } from './user/user.service'
@Controller('get')
export class AppController {
  /**
   * 构造函数 - 依赖注入
   * 这里自动注入了AppService,就像给服务员配备了厨师
   * private readonly 表示这个属性是私有的且只读的
   */
  constructor(@Inject("abc") private readonly appService: AppService,
    @Inject("test") private readonly abc: string,
    @Inject("ccc") private readonly ccc,
    private readonly userService: UserService) { }// 必须明确类型,否则会报错

  /**
   * 处理 GET 请求的方法
   */
  @Get('a')
  getHello() {
    // 调用AppService的getHello方法获取数据
    console.log(this.ccc);
    return this.userService.findAll({code:123,name:'qqq'});
  }

}
相关推荐
小李子呢02114 小时前
前端八股CSS(2)---动画的实现方式
前端·javascript
GreenTea6 小时前
从 Claw-Code 看 AI 驱动的大型项目开发:2 人 + 10 个自治 Agent 如何产出 48K 行 Rust 代码
前端·人工智能·后端
渣渣xiong6 小时前
从零开始:前端转型AI agent直到就业第五天-第十一天
前端·人工智能
布局呆星7 小时前
Vue3 | 组件通信学习小结
前端·vue.js
C澒7 小时前
IntelliPro 企业级产研协作平台:前端智能生产模块设计与落地
前端·ai编程
OpenTiny社区8 小时前
重磅预告|OpenTiny 亮相 QCon 北京,共话生成式 UI 最新技术思考
前端·开源·ai编程
前端老实人灬8 小时前
web前端面试题
前端
Moment8 小时前
AI 全栈指南:NestJs 中的 Service Provider 和 Module
前端·后端·面试
IT_陈寒8 小时前
为什么我的JavaScript异步回调总是乱序执行?
前端·人工智能·后端