Medusa-extender 사용자 지정 엔터티

docker version of medusa 으로 이동했기 때문에 Postgres를 데이터베이스로 빠르게 실행할 수 있습니다.
이를 통해 마침내 일부 사용자 지정 엔터티를 시험해 볼 수 있습니다.

이 특정 문서에서는 medusa-extender로 수행되는 방법을 살펴보겠습니다.

게시물 모듈 생성



medusa-extender의 모든 새 구성 요소는 기술적으로 모듈이므로 다음 명령을 사용하여 post 모듈을 생성하여 시작하겠습니다.

./node_modules/.bin/medex g -m post


다음에 엔터티가 필요하며 이를 위해 다음 명령을 사용할 수 있습니다.

./node_modules/.bin/medex g -e post


마지막으로 마이그레이션이 필요합니다.

./node_modules/.bin/medex g -mi post


이들은 이 문서에 필요한 세 가지 명령이며 프로젝트에서 다음 구조를 생성해야 합니다.



모듈의 경우 아무것도 변경할 필요가 없습니다. 그러나 이를 사용하려면 main.ts 파일에 로그인해야 합니다.

import { PostModule } from './modules/post/post.module';

await new Medusa(resolve(__dirname, '..'), expressInstance).load([PostModule]);


엔터티의 경우 파일을 열고 다음 코드를 안에 넣습니다.

import { Column, Entity } from 'typeorm';
import { Entity as MedusaEntity } from 'medusa-extender';

@MedusaEntity()
@Entity()
export class Post {
  @Column()
  name: string;
}


기본적으로 medusa-extender는 ID 및 날짜 개체와 같은 기본 엔터티 속성을 관리합니다.
여기에 이름 열을 추가합니다.

이제 데이터베이스를 업데이트하는 데 사용할 마이그레이션 파일로 이동할 수 있습니다.
일부 기술적인 제약으로 인해 이 글을 쓰는 시점에 직접 작성해야 합니다.

import {MigrationInterface, QueryRunner} from 'typeorm';
import {Migration} from 'medusa-extender';

@Migration()
export class PostMigration1663651032643 implements MigrationInterface {
    name = 'PostMigration1663651032643';

    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()
            )`
        )
    }

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


여기에서 함께 제공되어야 하는 모든 열과 함께 up 명령에서 테이블 기둥을 생성합니다.
그리고 down 명령에서 삭제합니다. 이 부분은 쿼리가 실패하거나 사용자가 마이그레이션을 되돌리는 경우에 필요합니다.

마지막 부분은 Extender에 대한 마이그레이션을 활성화하는 것입니다. medusa-config.js 파일을 열고 다음 줄을 추가합니다.

module.exports = {
  projectConfig: {
    cli_migration_dirs: ['dist/**/*.migration.js'],
  },
};


이제 docker 서버 인스턴스를 열고 다음 명령을 실행할 수 있습니다.

// First, build everything:
npm run build

// Then run the migrations
./node_modules/.bin/medex m -r


그리고 그게 다야!
데이터베이스를 열면 포스트 테이블을 볼 수 있습니다.



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



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

좋은 웹페이지 즐겨찾기