分离实体定义
简单定义示例:
关系示例:
export const PostEntity = new EntitySchema({
name: "post",
columns: {
id: {
type: Number,
primary: true,
generated: true
},
title: {
type: String
},
text: {
type: String
},
relations: {
categories: {
type: "many-to-many",
target: "category" // CategoryEntity
}
}
});
如果要使实体类型安全,可以定义模型并在模式定义中指定它:
export interface Category {
id: number;
name: string;
}
export const CategoryEntity = new EntitySchema<Category>({
name: "category",
columns: {
type: Number,
primary: true,
generated: true
},
name: {
type: String
}
}
});
当使用Decorator
方法时,很容易将基本列extend
为抽象类并简单地扩展它。
例如,在BaseEntity
中这样定义id
,和updatedAt
列。 有关更多详细信息,请参阅具体表继承的文档
重新审视上面的Category
示例。 你可能希望extract
基本列描述并在其他模式中复用它,则可以通过以下方式完成:
现在你可以在其他模式模型中使用BaseColumnSchemaPart
,如下所示:
export const CategoryEntity = new EntitySchema<Category>({
name: "category",
columns: {
...BaseColumnSchemaPart,
// CategoryEntity现在具有已定义的id,createdAt,updatedAt列!
// 此外,还定义了以下新字段
name: {
type: String
}
});
当然,你可以像使用装饰器一样在存储库或实体管理器中使用已定义的模式。
回顾先前定义的Category
示例(带有Interface
和CategoryEntity
模式)以获取一些数据或操纵数据库。