繁体   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