Skip to content

Commit 8b082f1

Browse files
authored
feat: use getMetadataByDecorator of discover service instead of SetMetadata
1 parent 386b837 commit 8b082f1

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

content/fundamentals/discovery-service.md

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,19 @@ for (const provider of providers) {
7777
Suppose 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

8585
And you use it in a service:
8686

8787
```typescript
8888
import { 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')
9393
export class CustomService {}
9494
```
9595

@@ -98,12 +98,11 @@ Now, you can use `DiscoveryService` to find all providers with this metadata:
9898
```typescript
9999
const 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

Comments
 (0)