# Get NPM Component from Name & version

**URL:** <https://community.sonatype.com/t/get-npm-component-from-name-version/6020>\
**Category:** Sonatype Nexus Repository\
**Tags:** integrations, nexus-repository\
**Created:** [March 8, 2021, 4:29am UTC](https://community.sonatype.com/t/get-npm-component-from-name-version/6020 "2021-03-08T04:29:02Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![manojpdn](https://avatars.discourse-cdn.com/v4/letter/m/dbc845/32.png) [@manojpdn](https://community.sonatype.com/u/manojpdn)\
**Post date:** [March 22, 2021, 8:39pm UTC](https://community.sonatype.com/t/get-npm-component-from-name-version/6020/5 "2021-03-22T20:39:31Z")

</div>

We can write a custom query method to get components by name & version.

```
    private List<Component> getAllMatchingComponents(Repository repository, String name, Map<String, String> formatAttributes) {
    Preconditions.checkNotNull(repository);
    Preconditions.checkNotNull(name);
    Preconditions.checkNotNull(formatAttributes);
    List<Component> filteredComponents;
    try (StorageTx storageTx = repository.facet(StorageFacet.class).txSupplier().get()) {
        storageTx.begin();
        Query.Builder query = Query.builder().where("name").eq(name).suffix("order by version desc");
        Iterable<Component> unfilteredComponents = storageTx.findComponents(query.build(), Collections.singletonList(repository));
        Stream<Component> filteredStream = StreamSupport.stream(unfilteredComponents.spliterator(), false).filter(
                component -> formatAttributes.entrySet().stream().allMatch(
                        entry -> Objects.equals(entry.getValue(), component.version())));
        filteredComponents = ImmutableList.copyOf(filteredStream.iterator());
    }

    return filteredComponents;
}
```

---

_[View the full topic](https://community.sonatype.com/t/get-npm-component-from-name-version/6020)._
