nj-request-scope
v1.0.8
Published
Performant express request scope dependency injection for NestJS framework
Downloads
10,391
Readme
nj-request-scope
Performant request scope dependency injection for NestJS framework using express server
Description
nj-request-scope library solves NestJs request-scope dependency injection problems:
- bubbling up the injection chain - NestJS documentation
- request-scope performance issues - NestJS documentation
This solution is based on the build-in javascript Proxy design pattern. For every request, only the proxy's target object is changed to the new request-scope instance instead of creating all injection chain objects.
Installation
npm install nj-request-scope
nj-request-scope was tested with NestJs 8.x & 9.x
Usage
To use nj-request-scope in NestJS module you have to add import of RequestScopeModule
in the module class decorator:
import { RequestScopeModule } from 'nj-request-scope';
@Module({
imports: [RequestScopeModule],
})
Next, there are two ways of using nj-request-scope.
- Inject express request object into class constructor with
NJRS_REQUEST
token:
import { NJRS_REQUEST } from 'nj-request-scope';
[...]
constructor(@Inject(NJRS_REQUEST) private readonly request: Request) {}
- Change class inject scope to request-scope with
@RequestScope()
decorator:
import { RequestScope } from 'nj-request-scope';
@Injectable()
@RequestScope()
export class RequestScopeService {
Limitations
Proxy handler implements only most common methods:
get
has
set
getPrototypeOf
getOwnPropertyDescriptor
ownKeys
If you need other methods implemented please feel free to contribute. ProxyHandler implementation
Example project
https://github.com/kugacz/nj-request-scope-example
License
nj-request-scope is MIT licensed.