分离实体定义

    简单定义示例:

    关系示例:

    1. export const PostEntity = new EntitySchema({
    2. name: "post",
    3. columns: {
    4. id: {
    5. type: Number,
    6. primary: true,
    7. generated: true
    8. },
    9. title: {
    10. type: String
    11. },
    12. text: {
    13. type: String
    14. },
    15. relations: {
    16. categories: {
    17. type: "many-to-many",
    18. target: "category" // CategoryEntity
    19. }
    20. }
    21. });

    如果要使实体类型安全,可以定义模型并在模式定义中指定它:

    1. export interface Category {
    2. id: number;
    3. name: string;
    4. }
    5. export const CategoryEntity = new EntitySchema<Category>({
    6. name: "category",
    7. columns: {
    8. type: Number,
    9. primary: true,
    10. generated: true
    11. },
    12. name: {
    13. type: String
    14. }
    15. }
    16. });

    当使用Decorator方法时,很容易将基本列extend为抽象类并简单地扩展它。 例如,在BaseEntity中这样定义id,和updatedAt列。 有关更多详细信息,请参阅具体表继承的文档

    重新审视上面的Category示例。 你可能希望extract基本列描述并在其他模式中复用它,则可以通过以下方式完成:

    现在你可以在其他模式模型中使用BaseColumnSchemaPart,如下所示:

    1. export const CategoryEntity = new EntitySchema<Category>({
    2. name: "category",
    3. columns: {
    4. ...BaseColumnSchemaPart,
    5. // CategoryEntity现在具有已定义的id,createdAt,updatedAt列!
    6. // 此外,还定义了以下新字段
    7. name: {
    8. type: String
    9. }
    10. });

    当然,你可以像使用装饰器一样在存储库或实体管理器中使用已定义的模式。 回顾先前定义的Category示例(带有InterfaceCategoryEntity模式)以获取一些数据或操纵数据库。