@jporter-dev/nestjs-opensearch
v1.2.2
Published
Nest - modern, fast, powerful node.js web framework (@opensearch-project/opensearch)
Downloads
385
Readme
Description
Opensearch module for Nest based on the official @opensearch-project/opensearch package.
Installation
$ npm i --save @jporter-dev/nestjs-opensearch @opensearch-project/opensearch
Usage
Import OpensearchModule
:
@Module({
imports: [OpensearchModule.register({
node: 'http://localhost:9200',
})],
providers: [...],
})
export class SearchModule {}
Inject OpensearchService
:
@Injectable()
export class SearchService {
constructor(private readonly opensearchService: OpensearchService) {}
}
Async options
Quite often you might want to asynchronously pass your module options instead of passing them beforehand. In such case, use registerAsync()
method, that provides a couple of various ways to deal with async data.
1. Use factory
OpensearchModule.registerAsync({
useFactory: () => ({
node: 'http://localhost:9200'
})
});
Obviously, our factory behaves like every other one (might be async
and is able to inject dependencies through inject
).
OpensearchModule.registerAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
node: configService.get('OPENSEARCH_NODE'),
}),
inject: [ConfigService],
}),
2. Use class
OpensearchModule.registerAsync({
useClass: OpensearchConfigService
});
Above construction will instantiate OpensearchConfigService
inside OpensearchModule
and will leverage it to create options object.
class OpensearchConfigService implements OpensearchOptionsFactory {
createOpensearchOptions(): OpensearchModuleOptions {
return {
node: 'http://localhost:9200'
};
}
}
3. Use existing
OpensearchModule.registerAsync({
imports: [ConfigModule],
useExisting: ConfigService,
}),
It works the same as useClass
with one critical difference - OpensearchModule
will lookup imported modules to reuse already created ConfigService
, instead of instantiating it on its own.
API Spec
The OpensearchService
wraps the Client
from the official @opensearch-project/opensearch methods. The OpensearchModule.register()
takes options
object as an argument, read more.
Support
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.
Stay in touch
- Author - Kamil Myśliwiec
- Website - https://nestjs.com
- Twitter - @nestframework
License
Nest is MIT licensed.