![](/img/trans.png)
[英]How to add 'new field' color based on 'existing field' percentage in array
[英]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.