nest导入模块

如果你想要在Amodule里使用Bmodule里的服务那么可以选择:

如果模块外导入你想要在Amodule里使用Bmodule里的服务那么可以选择:

  1. 在Bmodule里写入exports:[BService]
  2. 在Amodule里写入import:[Bmodule]

没错,第二次是导入module,而不是service

这是最容易看错的

导入之后,有两种方式注入依赖

1.属性注入依赖

1
2
3
4
5
6
7
8
9
10
11
@Injectable()
export class OrderService {
//依赖注入之属性注入共享的服务
@Inject(BService)
private bService:BService;

getOrderDesc():string{
const name = this.userService.getUserName();
return `Order for ${name}`;
}
}

2.构造函数注入

1
2
3
4
5
6
7
8
@Injectable()
export class OrderService {
constructor(private userService:UserService){}
getOrderDesc():string{
const name = this.userService.getUserName();
return `Order for ${name}`;
}
}

全局模块

@Global装饰器声明就完事了(在module声明)

1
2
3
4
5
6
7
8
9
10
11
import { Global, Module } from '@nestjs/common';
import { UserService } from './user.service';
import { UserController } from './user.controller';

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