delete Method - Data Model Repository Reference

The delete method of a data model repository deletes one or more records of the data model.

Note: This reference assumes you've already resolved the data model repository, as explained in the Data Model Repository Reference documentation.

delete Parameters#

Loading...

Delete Record by ID#

Note: As of Medusa v2.11.0, MikroORM dependencies are included in the @medusajs/framework package. If you're using an older version of Medusa, change the import statement to @mikro-orm/knex.
Code
import { 
  InjectTransactionManager,
  MedusaContext,
  MedusaService,
  InjectManager,
} from "@medusajs/framework/utils"
import { Context, InferTypeOf, DAL } from "@medusajs/framework/types"
import { EntityManager } from "@medusajs/framework/mikro-orm/knex"
import Post from "./models/post"

class BlogModuleService extends MedusaService({
  Post,
}){
  // ...
  @InjectTransactionManager()
  protected async doSomething_(
    id: string,
    @MedusaContext() sharedContext?: Context<EntityManager>
  ): Promise<any> {
    const deletedIds = await this.postRepository_.delete({
      id,
    })

    return deletedIds
  }

  @InjectManager()
  async doSomething(
    id: string,
    @MedusaContext() sharedContext?: Context<EntityManager>
  ): Promise<any> {
    return await this.doSomething_(id, sharedContext)
  }
}

Parameters#

The delete method accepts an object of filters to select the records to delete.

In the example above, you pass an object with the id property to delete a record by its ID.

Returns#

The method returns an array of strings, each representing the ID of a deleted record.


Delete Records by Filters#

Code
import { 
  InjectTransactionManager,
  MedusaContext,
  MedusaService,
  InjectManager,
} from "@medusajs/framework/utils"
import { Context, InferTypeOf, DAL } from "@medusajs/framework/types"
import { EntityManager } from "@medusajs/framework/mikro-orm/knex"
import Post from "./models/post"

class BlogModuleService extends MedusaService({
  Post,
}){
  // ...
  @InjectTransactionManager()
  protected async doSomething_(
    id: string,
    @MedusaContext() sharedContext?: Context<EntityManager>
  ): Promise<any> {
    const deletedIds = await this.postRepository_.delete({
      title: "My Post",
    })

    return deletedIds
  }

  @InjectManager()
  async doSomething(
    id: string,
    @MedusaContext() sharedContext?: Context<EntityManager>
  ): Promise<any> {
    return await this.doSomething_(id, sharedContext)
  }
}

Parameters#

Since the delete method accepts an object of filters, you can pass any property of the data model as a filter.

In the example above, you pass an object with the title property to delete all records with that title.

Note: Find examples of different filters in the Filter Records documentation.

Returns#

The method returns an array of strings, each representing the ID of a deleted record.

Was this page helpful?
Ask Bloom
For assistance in your development, use Claude Code Plugins or Docs MCP server in Cursor, VSCode, etc...FAQ
What is Medusa?
How can I create a module?
How can I create a data model?
How do I create a workflow?
How can I extend a data model in the Product Module?
Recipes
How do I build a marketplace with Medusa?
How do I build digital products with Medusa?
How do I build subscription-based purchases with Medusa?
What other recipes are available in the Medusa documentation?
Chat is cleared on refresh
Line break
⇧↵