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'});
  }

}
相关推荐
橙序员小站2 小时前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
炫饭第一名4 小时前
速通Canvas指北🦮——基础入门篇
前端·javascript·程序员
王晓枫4 小时前
flutter接入三方库运行报错:Error running pod install
前端·flutter
符方昊4 小时前
React 19 对比 React 16 新特性解析
前端·react.js
ssshooter4 小时前
又被 Safari 差异坑了:textContent 拿到的值居然没换行?
前端
曲折5 小时前
Cesium-气象要素PNG色斑图叠加
前端·cesium
Forever7_5 小时前
Electron 淘汰!新的桌面端框架 更强大、更轻量化
前端·vue.js
Angelial5 小时前
Vue3 嵌套路由 KeepAlive:动态缓存与反向配置方案
前端·vue.js
jiayu5 小时前
Angular学习笔记24:Angular 响应式表单 FormArray 与 FormGroup 相互嵌套
前端
jiayu5 小时前
Angular6学习笔记13:HTTP(3)
前端