我试图在纯代码中定义模式,而不使用“实验性”修饰符。使用装饰器可以实现的一切都应该在纯代码中实现,不是吗?
下面是一个例子,说明我目前所做的工作,我将在之后提出我的问题:
// define the TypeScript type
export type ProjectRecord = {
project_id: string
name: string
created: Date
}
// instantiate the schema in pure code
export const ProjectSchema = new EntitySchema<ProjectRecord>({
name: "PROJECT",
tableName: "project",
columns: {
project_id: {primary: true, type: "varchar", length: 32},
name: {type: "varchar", length: 128},
created: {type: "datetime"},
},
});
这对于进行非常原始的CRUD操作非常有效。我没有能够做的是定义模式之间的关系,以便透明地执行JOIN
操作。假设上面定义的ProjectSchema
和其他地方定义的m2n2o1p(一个用户有多个项目),我如何定义relations
配置选项?
我使用TypeScript类型提示对代码进行了修改,并设法在EntitySchema
构造函数中获得了以下配置,作为起点,但它非常不完整。
relations: {
user_id: {
target: {
type: UserSchema,
name: "u"
},
type: "one-to-many"
}
}
理想情况下,我可以只执行:project.user
和user.projects
来访问链接对象。如果您还可以向我展示级联操作配置的样子(对于级联和非级联情况),我将非常感激。
非常感谢。
1条答案
按热度按时间4nkexdtk1#
目前,我在一些实现过程中遇到了相同的问题。。。
我选择使用纯实体来避免与Typeorm框架耦合。
JavaScript example repository升
以下是Typeorm documentation的示例:
应用.js
实体/类别.js
实体/Post.js
关系选项