www/apps/resources/app/data-model-repository-reference/methods/upsert/page.mdx
import { TypeList } from "docs-ui"
export const metadata = {
title: upsert Method - Data Model Repository Reference,
}
The upsert method of a data model repository creates or updates one or more records of the data model.
This reference assumes you've already resolved the data model repository, as explained in the Data Model Repository Reference documentation.
</Note>upsert Parametersarray",
name: "data",
description: "An array of records to create or update. If a record object has an id property, the method will try to update the record. Otherwise, the method will create a new record.",
required: true,
}
]}
sectionTitle="upsert Parameters"
/>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.
import {
InjectTransactionManager,
MedusaContext,
MedusaService,
} 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 posts = await this.postRepository_.upsert([
{
id: "01JSHAW6Z7KW4X6E8MFPGNEKHC",
title: "My Old Post",
},
{
title: "My New Post",
},
])
return posts
}
@InjectManager()
async doSomething(
id: string,
@MedusaContext() sharedContext?: Context<EntityManager>
): Promise<any> {
return await this.doSomething_(id, sharedContext)
}
}
The upsert method accepts an array of objects, each representing a record to create or update.
If a record object has an id property, the method will try to update a record with that id. Otherwise, the method will create a new record.
If the id property is specified but no record with that id exists, the created record will have the specified id.
Each object has the same shape as the data model.
The method returns an array of the created or updated records.