Skip to main content
Skip to main content

listAndCount - Product Module Reference

Beta

This documentation provides a reference to the listAndCount method. This belongs to the Product Module.

This method is used to retrieve a paginated list of products along with the total count of available products satisfying the provided filters.

Example

To retrieve a list of products using their IDs:

import {
initialize as initializeProductModule,
} from "@medusajs/product"

async function retrieveProducts (ids: string[]) {
const productModule = await initializeProductModule()

const [products, count] = await productModule.listAndCount({
id: ids
})

// do something with the products or return them
}

To specify relations that should be retrieved within the products:

import {
initialize as initializeProductModule,
} from "@medusajs/product"

async function retrieveProducts (ids: string[]) {
const productModule = await initializeProductModule()

const [products, count] = await productModule.listAndCount({
id: ids
}, {
relations: ["categories"]
})

// do something with the products or return them
}

By default, only the first 15 records are retrieved. You can control pagination by specifying the skip and take properties of the config parameter:

import {
initialize as initializeProductModule,
} from "@medusajs/product"

async function retrieveProducts (ids: string[], skip: number, take: number) {
const productModule = await initializeProductModule()

const [products, count] = await productModule.listAndCount({
id: ids
}, {
relations: ["categories"],
skip,
take
})

// do something with the products or return them
}

You can also use the $and or $or properties of the filter parameter to use and/or conditions in your filters. For example:

import {
initialize as initializeProductModule,
} from "@medusajs/product"

async function retrieveProducts (ids: string[], title: string, skip: number, take: number) {
const productModule = await initializeProductModule()

const [products, count] = await productModule.listAndCount({
$and: [
{
id: ids
},
{
q: title
}
]
}, {
relations: ["categories"],
skip,
take
})

// do something with the products or return them
}

Parameters

The filters to apply on the retrieved products.
The configurations determining how the products are retrieved. Its properties, such as select or relations, accept the attributes or relations associated with a product.
sharedContextContext
A context used to share resources, such as transaction manager, between the application and the module.

Returns

PromisePromise<[ProductDTO[], number]>Required
The list of products along with the total count.
Was this section helpful?