56 lines
1.8 KiB
Plaintext
56 lines
1.8 KiB
Plaintext
export const metadata = {
|
||
title: `${pageNumber} Commerce Modules`,
|
||
}
|
||
|
||
# {metadata.title}
|
||
|
||
In this chapter, you'll learn about Medusa's commerce modules.
|
||
|
||
## What is a Commerce Module?
|
||
|
||
Medusa provides all its commerce features as separate commerce modules, such as the Product or Order modules. Medusa uses these modules in its API routes to expose their commerce features.
|
||
|
||
Medusa's commerce modules and your custom modules are interchangeable in the Medusa application, making Medusa’s architecture more flexible.
|
||
|
||
### List of Medusa's Commerce Modules
|
||
|
||
Refer to [this reference](!resources!/commerce-modules) for a full list of commerce modules in Medusa.
|
||
|
||
---
|
||
|
||
## Resolve Commerce Module Services
|
||
|
||
Similarly to your custom module, a commerce module's main service is registered in the Medusa container. So, you can resolve it in your resources, such as API routes, to use its functionality.
|
||
|
||
For example, you saw this code snippet in the [Medusa container chapter](../medusa-container/page.mdx):
|
||
|
||
```ts highlights={[["10"]]}
|
||
import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http"
|
||
import { IProductModuleService } from "@medusajs/framework/types"
|
||
import { Modules } from "@medusajs/framework/utils"
|
||
|
||
export const GET = async (
|
||
req: MedusaRequest,
|
||
res: MedusaResponse
|
||
) => {
|
||
const productModuleService: IProductModuleService = req.scope.resolve(
|
||
Modules.PRODUCT
|
||
)
|
||
|
||
const [, count] = await productModuleService
|
||
.listAndCountProducts()
|
||
|
||
res.json({
|
||
count,
|
||
})
|
||
}
|
||
```
|
||
|
||
When you resolve the `Modules.PRODUCT` (or `productModuleService`) registration name, you're actually resolving the main service of the Product Module.
|
||
|
||
<Note title="Tip">
|
||
|
||
To resolve the main service of any commerce module, use the registration name defined in the `Modules` enum imported from `@medusajs/framework/utils`.
|
||
|
||
</Note>
|