Как добавить настраиваемое поле в существующую сущность в MedusaJS
Я хотел бы добавить настраиваемое поле (с именем description) в объект ProductCollection в серверном приложении MedusaJS. До сих пор я следил за тем, что:
- создал новый файл под
src/models
папка, котораяmyCollection.ts
со следующим содержанием
import { Column, Entity } from "typeorm";
import { ProductCollection } from "@medusajs/medusa";
@Entity()
export class MyProductCollection extends ProductCollection {
@Column({ type: "varchar" })
description: string | null;
}
- создал миграцию с помощью этой команды:
npx typeorm migration:create -n DescriptionAdded --dir src/migrations
и это дает мне новый файл в папкеsrc/migrations
названный1674744755671-DescriptionAdded.ts
и я отредактировал файл следующим образом:
import { MigrationInterface, QueryRunner, TableColumn } from "typeorm";
export class DescriptionAdded1674744755671 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.addColumn(
"product_collection",
new TableColumn({
name: "description",
type: "varchar",
isNullable: true,
})
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.dropColumn("product_collection", "description");
}
}
Затем я запускаю миграцию с помощью этой командыmedusa migrations run
. И, как я и ожидал, он создал поле в таблице базы данных. Затем я создал приложение Medusa с помощью этой командыyarn run build
. И я перезапустил приложение с помощьюyarn run start
. Я использую последнее серверное приложение medusajs с последним пакетом medusa 1.7.5.
Я ожидал, что это поле будет получено при вызове следующего API:
http://localhost:9000/store/collections
Я создал серверное приложение medusajs с помощью следующих команд:
yarn global add @medusajs/medusa-cli
medusa new my-medusa-store --seed
Я запускаю серверное приложение Medusa на своем локальном компьютере, и оно не дает нового поля с именем description .
Я не мог найти, как добавить пользовательское поле в приложение сервера медузы. Как можно расширить существующие сущности в серверном приложении medusajs? Я видел репозиторий medusa-extender , но он не показывает ни одного примера, как это сделать.
Я надеюсь, что вы могли бы мне помочь.
Спасибо
Я установил серверное приложение medusa с помощью medusa/cli и добавил файлы, описанные выше. Я не смог найти никакой документации по этому поводу на веб-сайте medusajs .
1 ответ
Соавтор Медузы здесь.
Обычно мы советуем разработчикам не расширять основные схемы базы данных дополнительными столбцами, так как это может поставить под угрозу удобство сопровождения вашей установки. Поэтому мы не предоставляем собственный способ сделать это. Тем не менее, у нас есть планы добавить в ближайшем будущем API настраиваемых полей, который позволит вам эффективно расширять ваши схемы, но не напрямую. Скорее всего, это будет выполнено по схеме EAV.
Кроме того, похоже, вы могли перепутать новые объекты с дополнительными столбцами таблицы. Когда вы добавляете модели в
У меня нет опыта работы с Typeorm
Что касается расширителя, вы действительно можете использовать его для расширения схем вашей базы данных, но, опять же, он имеет оговорку о потенциальной угрозе ремонтопригодности вашего экземпляра и будущих путей обновления.