medusa에서 사용자 지정 엔터티 만들기
6290 단어 beginnersjavascriptwebdev
이것은 매우 빠른 방법이지만 우리가 할 수 있는 다른 방법은 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
마이그레이션 파일 내부의
up
및 down
함수에 대해 다음 형식을 추가합니다.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에 연결하거나
Reference
이 문제에 관하여(medusa에서 사용자 지정 엔터티 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dailydevtips1/creating-custom-entities-in-medusa-1p47텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)