Javascript 如何在nest.js中注入普通服务/提供者
我在nest.js中创建了一个简单的typeScript类。 JwtTokenService.jsJavascript 如何在nest.js中注入普通服务/提供者,javascript,typescript,nestjs,Javascript,Typescript,Nestjs,我在nest.js中创建了一个简单的typeScript类。 JwtTokenService.js // JwtTokenService.js import { Injectable, Optional } from '@nestjs/common'; import { JwtService } from '@nestjs/jwt'; import { JwtPayload } from '../modules/auth/interface/jwt-payload.interface'; @
// JwtTokenService.js
import { Injectable, Optional } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { JwtPayload } from '../modules/auth/interface/jwt-payload.interface';
@Injectable()
export class JwtTokenService {
constructor(private readonly jwtService: JwtService) {}
async generateJWT(payload: object): Promise<string> {
payload['type'] = 'access_token';
const token = this.jwtService.sign({ payload });
return token;
}
}
//JwtTokenService.js
从'@nestjs/common'导入{可注射,可选};
从'@nestjs/jwt'导入{JwtService};
从“../modules/auth/interface/jwt payload.interface”导入{JwtPayload};
@可注射()
导出类JwtTokenService{
构造函数(私有只读jwtService:jwtService){}
异步generateJWT(负载:对象):承诺{
有效负载['type']=“访问令牌”;
const token=this.jwtService.sign({payload});
返回令牌;
}
}
现在我如何在任何控制器中使用它。与user、auth和other类似。在嵌套应用程序模块中注册服务:
从'@nestjs/common'导入{Module};
将{YourController}从“./path导入/your.controller”;
将{JwtTokenService}从“./path导入/JwtTokenService.service”;
@模块({
控制器:[您的控制器],
提供者:[JwtTokenService],
})
导出类应用程序模块{}
然后您可以在控制器中使用它:
从'@nestjs/common'导入{Controller,Get,Post,Body};
将{JwtTokenService}从“./path导入/JwtTokenService.service”;
@控制器(“您的”)
导出类控制器{
构造函数(私有只读jwtTokenService:jwtTokenService){}
@得到()
异步get(){
//使用`this.jwtTokenService`
...
}
}
Nest正在使用a向控制器提供服务,这就是为什么您需要在应用程序模块中声明服务是如何提供的。非常感谢。我一直都做得很好。问题是另外一回事,我认为这与服务注入有关。顺便说一句,我们可以使用
JwtTokenService
,只需将它导入当前(您需要使用它的地方)Module
文件,它就会工作。我们不需要将其导入到ApplicationModule
是,但最终必须将其导入到ApplicationModule,例如,您的ApplicationModule将导入特定的模块。