medusa에서 사용자 지정 엔터티 만들기

이전 글에서는 먼저 creating a custom entity with medusa-extender을 살펴보았습니다.
이것은 매우 빠른 방법이지만 우리가 할 수 있는 다른 방법은 medusa를 사용하여 이 사용자 지정 엔터티를 직접 만드는 것입니다.

이 기사에서는 medusa 자체에서 동일한 효과를 얻는 방법을 보여 드리겠습니다.

medusa에서 엔터티 만들기



먼저 models 디렉토리에 src라는 새 폴더를 만들어야 합니다.

거기에서 새 엔터티가 될 post.ts 파일을 만듭니다.
파일 자체는 다음과 같습니다.

import { BeforeInsert, Column, Entity, PrimaryColumn } from "typeorm";
import { BaseEntity} from "@medusajs/medusa";
import { generateEntityId } from "@medusajs/medusa/dist/utils"

@Entity()
export class Post extends BaseEntity {
    @Column({type: 'varchar'})
    name: string | null;

    @BeforeInsert()
    private beforeInsert(): void {
        this.id = generateEntityId(this.id, "post")
    }
}


여기서는 medusa 기본 엔터티를 확장해야 한다고 말합니다. (SoftDeletableEntity를 선택할 수도 있습니다.)
그리고 생성 시 항상 임의의 ID를 생성합니다.

이제 터미널에서 다음 명령을 실행하여 새 마이그레이션을 생성할 수 있습니다.

npx typeorm migration:create -n Post --dir src/migrations


마이그레이션 파일 내부의 updown 함수에 대해 다음 형식을 추가합니다.

public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
        `CREATE TABLE IF NOT EXISTS "post" (
            "id" character varying NOT NULL,
            "name" character varying NOT NULL,
            "created_at" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
            "updated_at" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
        )`
    )
    await queryRunner.createPrimaryKey("post", ["id"])
}

public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.dropTable("post", true)
}


이것은 기본 TypeORM 마이그레이션이며 their website에서 이러한 명령에 대한 많은 정보를 찾을 수 있습니다.

다음으로 마이그레이션을 실행해야 합니다.
그 전에 npm run build를 사용하여 최신 버전을 빌드한 다음 마이그레이션을 실행하십시오.

medusa migrations run


새 마이그레이션이 실행되었다는 메시지가 나타나야 하며 이제 데이터베이스에서 이를 볼 수 있어야 합니다.



보시다시피 medusa-extender와 작동하는 방식이 매우 유사합니다.
그리고 그것은 모두 선호도에 달려 있습니다.

읽어주셔서 감사합니다. 연결해 봅시다!



제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나

좋은 웹페이지 즐겨찾기