文章目录
服务
介绍模块之前先提一嘴服务(),对于文档这块我看完了并没有明白这个里面写的该是什么,然后我问了我的后端朋友他们的service
层都做些什么,才得知这里一般写数据库操作之前的逻辑.
1. 用命令创建service
nest g service cats
2. 写一些基本的代码
在cats.service.ts
文件下写下面代码
import { Inject, Injectable } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';
@Injectable()
export class CatsService {
private readonly cats: Cat[] = [];
create(cat: Cat) {
this.cats.push(cat);
}
findAll(): Cat[] {
return this.cats;
}
getText(){
return 'cats模块里的控制器'
}
}
这里用到了接口,把接口也定义一下
export interface Cat {
name: string;
age: number;
breed: string;
}
一、模块应用
一般应用于你想要使用其他模块的方法的时候,可能我描述的不是很好,别着急,咱们啊,一会配合图就懂了
二、创建模块
使用命令nest g module cats
创建(如果有多个环境别忘了选环境哦)
三、功能模块基本使用
- 在cats.module.ts中引入想使用的模块
- 声明模块(不然一会在cats.controller使用会报错)
- 在controller层使用
- 访问看下效果
四、全局模块
如果有全局引用的需要,可以尝试@Global()暴露出去,就不用每个使用的地方都引用了,不过这并不是可取的。但是有时候,你可能只想提供一组随时可用的东西 - 例如:helper,数据库连接等等。这就是为什么你能够使模块成为全局模块。
1.创建模块share
这里为了回顾下之前讲的,直接将controller,service,module都创建一下吧(如果不止一个环境的话别忘了选哦)
nest g controller share
nest g service share
nest g module share
2. 在service中创建个方法
- share.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class ShareService {
getShareData(){
return '公共服务'
}
}
3. 在module中注册为全局
share.module.ts
import { Global, Module } from '@nestjs/common';
import { ShareService } from './share.service';
// import { ShareController } from './share.controller';
@Global()
@Module({
providers: [ShareService],
// controllers: [ShareController],
exports:[ShareService],//必须导出
imports:[]
})
export class ShareModule {}
这里要注意的除了@Global()注册全局,还有exports导出模块,
4. 在cats服务中引用
还有个动态模块我暂时没搞清楚,等我研究明白了补上