簡體   English   中英

如何將自定義字段添加到 MedusaJS 中的現有實體

[英]How to add a custom field to existing entity in MedusaJS

我想在 MedusaJS 服務器應用程序中向ProductCollection實體添加一個自定義字段(名為description )。 到目前為止我所遵循的是:

  • 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 正如我所料,它在數據庫表中創建了字段。 然后我通過這個命令yarn run build了 medusa 應用程序。 我用yarn run start重新啟動了應用程序。 我正在使用最新的 medusajs 服務器應用程序和最新的 medusa package ,即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/cli 安裝了 medusa 服務器應用程序並添加了上述文件。 我在medusajs網站上找不到任何關於此的文檔。

美杜莎的合著者在這里。

我們通常建議開發人員不要使用額外的列來擴展核心數據庫架構,因為這可能會損害設置的可維護性。 因此,我們不會公開執行此操作的本機方法。 雖然,我們計划在不久的將來添加一個自定義字段 API,這將有效地允許您擴展您的模式,但不是直接的。 它可能會按照 EAV 模式完成。

此外,您似乎可能將新實體與其他表列混淆了。 當您在/src/models中添加模型時,您會向數據庫中添加新- 而不是列。 在這里閱讀更多。

我沒有使用 Typeorm 的addColumn功能的經驗,所以我不能說它如何影響您的設置。 我能說的是,我們在大多數GET /store/*端點中查詢一組默認字段和實體關系。 如果您沒有明確提供您的附加字段,它們將不會成為響應的一部分。

關於擴展器,您確實可以使用它來擴展您的數據庫模式,但同樣,它伴隨着可能損害實例的可維護性和未來升級路徑的警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM