@@ -77,19 +77,19 @@ for (const provider of providers) {
7777Suppose you have a custom decorator that adds metadata to a provider:
7878
7979``` typescript
80- import { SetMetadata } from ' @nestjs/common ' ;
80+ import { DiscoveryService } from ' @nestjs/core ' ;
8181
82- export const CustomMetadata = ( value : string ) => SetMetadata ( ' custom:metadataKey ' , value );
82+ export const Pets = DiscoveryService . createDecorator ( );
8383```
8484
8585And you use it in a service:
8686
8787``` typescript
8888import { Injectable } from ' @nestjs/common' ;
89- import { CustomMetadata } from ' ./custom-metadata.decorator' ;
89+ import { Pets } from ' ./custom-metadata.decorator' ;
9090
9191@Injectable ()
92- @CustomMetadata ( ' example-value ' )
92+ @Pets ( ' cats ' )
9393export class CustomService {}
9494```
9595
@@ -98,12 +98,11 @@ Now, you can use `DiscoveryService` to find all providers with this metadata:
9898``` typescript
9999const providers = this .discoveryService .getProviders ();
100100
101- const filteredProviders = providers .filter ((provider ) => {
102- if (! provider .instance ) return null ;
103- return !! this .reflector .get (metadataPathToken , provider .instance .constructor );
104- });
101+ const [provider] = providers .filter (
102+ (prov ) => this .discoveryService .getMetadataByDecorator (Pets , prov ) === ' cats' ,
103+ );
105104
106- console .log (' Providers with custom metadata:' , filteredProviders );
105+ console .log (' Providers with cats metadata:' , provider );
107106```
108107
109108### Conclusion
0 commit comments