在模块中使用导出的组件
Using component from exports in a module
我有 UserService
,这是 UserModule
需要的,然后添加到 exports
import {Module} from '@nestjs/common'
import {TypeOrmModule} from '@nestjs/typeorm'
import {User} from './user.entity'
import {UserService} from './user.service'
@Module({
imports: [TypeOrmModule.forFeature([User])],
components: [UserService],
controllers: [],
exports: [UserService]
})
export class UserModule{}
然后我有一个 AuthModule
需要使用 UserService
来执行此操作:
import * as passport from 'passport'
import * as PassportAzureAD from 'passport-azure-ad'
import * as session from 'express-session'
import {
Module,
NestModule,
MiddlewaresConsumer,
RequestMethod,
} from '@nestjs/common'
import {Logger} from '@nestjs/common'
import {UserModule} from '../user/user.module'
@Module({
imports: [UserModule],
components: [],
controllers: []
})
export class AuthModule implements NestModule{
public configure(consumer: MiddlewaresConsumer){
// SNIP
// How to use `UserService` here
}
}
如何使用这里的UserService
? docs 说:
Now each module which would import the CatsModule (we need to put CatsModule into the imports array) has access to the CatsService and will share the same instance with all of the modules which are importing this module too.
但是没有给出你会如何做的例子。
导出的 UserService
需要在其构造函数中导入到 AuthModule
中,如下所示:
@Module({
imports: [UserModule],
components: [],
controllers: []
})
export class AuthModule implements NestModule{
constructor(
private readonly userService: UserService
) {}
public configure(consumer: MiddlewaresConsumer){
this.userService
}
}
更多关于依赖注入的信息:
我有 UserService
,这是 UserModule
需要的,然后添加到 exports
import {Module} from '@nestjs/common'
import {TypeOrmModule} from '@nestjs/typeorm'
import {User} from './user.entity'
import {UserService} from './user.service'
@Module({
imports: [TypeOrmModule.forFeature([User])],
components: [UserService],
controllers: [],
exports: [UserService]
})
export class UserModule{}
然后我有一个 AuthModule
需要使用 UserService
来执行此操作:
import * as passport from 'passport'
import * as PassportAzureAD from 'passport-azure-ad'
import * as session from 'express-session'
import {
Module,
NestModule,
MiddlewaresConsumer,
RequestMethod,
} from '@nestjs/common'
import {Logger} from '@nestjs/common'
import {UserModule} from '../user/user.module'
@Module({
imports: [UserModule],
components: [],
controllers: []
})
export class AuthModule implements NestModule{
public configure(consumer: MiddlewaresConsumer){
// SNIP
// How to use `UserService` here
}
}
如何使用这里的UserService
? docs 说:
Now each module which would import the CatsModule (we need to put CatsModule into the imports array) has access to the CatsService and will share the same instance with all of the modules which are importing this module too.
但是没有给出你会如何做的例子。
导出的 UserService
需要在其构造函数中导入到 AuthModule
中,如下所示:
@Module({
imports: [UserModule],
components: [],
controllers: []
})
export class AuthModule implements NestModule{
constructor(
private readonly userService: UserService
) {}
public configure(consumer: MiddlewaresConsumer){
this.userService
}
}
更多关于依赖注入的信息: