- TypeORM教程
- TypeORM - 主页
- TypeORM - 简介
- TypeORM - 安装
- TypeORM - 创建一个简单的项目
- TypeORM - 连接 API
- TypeORM - 实体
- TypeORM - 关系
- TypeORM - 使用存储库
- TypeORM - 使用实体管理器
- TypeORM - 查询生成器
- TypeORM - 查询操作
- TypeORM - 交易
- TypeORM - 索引
- TypeORM - 实体监听器和日志记录
- 使用 JavaScript 进行 TypeORM
- TypeORM - 使用 MongoDB
- 使用 Express 进行 TypeORM
- TypeORM - 迁移
- TypeORM - 使用 CLI
- TypeORM 有用资源
- TypeORM - 快速指南
- TypeORM - 有用的资源
- TypeORM - 讨论
TypeORM - 实体监听器和日志记录
实体监听器用于支持自定义方法并监听特定事件的实体。我们可以使用装饰器定义任何实体自定义方法。让我们简单地了解一下装饰器。
- @AfterLoad - 当使用 QueryBuilder 或存储库/管理器加载实体时,将调用此方法。
- @BeforeInsert - 此方法将在使用存储库/管理器插入实体之前调用。
- @AfterInsert - 使用存储库/管理器插入实体后将调用此方法。
- @BeforeUpdate - 此方法将在使用存储库/管理器更新现有实体之前调用它。
- @AfterUpdate - 它将在实体更新后调用。
- @BeforeRemove - 它将在实体被删除之前调用。
- @AfterRemove - 它将在实体被删除后调用。
订户
订阅者用于监听特定实体事件。它是从EntitySubscriberInterface实现的。让我们了解一个如何在订阅者中使用实体侦听器的简单示例。考虑学生实体如下所示 -
学生.ts
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm"; @Entity() export class Student { @PrimaryGeneratedColumn() id: number; @Column() Name: string; @Column() age: number; }
创建学生订阅者
订阅者是使用以下命令创建的 -
typeorm subscriber:create -n StudentSubscriber
上面的命令在您的项目 src 中创建一个订阅者目录。然后,在您的订阅者中创建 StudentSubscriber.ts 文件。您可以看到以下响应,
Subscriber /Users/workspace/TypeORM/FirstProject/src/subscriber/StudentSubscriber.ts has been created successfully.
现在转到文件,您可以看到以下编码 -
学生订阅者.ts
import {EventSubscriber, EntitySubscriberInterface} from "typeorm"; @EventSubscriber() export class StudentSubscriber implements EntitySubscriberInterface<any> { }
现在,在文件中添加以下更改,
import {EventSubscriber, EntitySubscriberInterface,InsertEvent} from "typeorm"; import {Student} from "../entity/Student"; @EventSubscriber() export class StudentSubscriber implements EntitySubscriberInterface<any> { listenTo() { return Student; } afterInsert(event: InsertEvent<Student>) { console.log(event); } }
这里,
我们使用afterInsert()方法来调用实体事件。同样,您也可以使用其他事件。我们已经配置了 ormconfig.json 文件。现在,在index.ts文件中添加以下更改,如下所示 -
索引.ts
import "reflect-metadata"; import {createConnection} from "typeorm"; import {Student} from "./entity/Student"; createConnection().then(async connection => { console.log('connection established'); }).catch(error => console.log(error));
执行应用程序后,您可以在屏幕上看到以下输出,
记录
数据库日志记录是高可用数据库解决方案设计的重要组成部分,因为数据库日志可以从故障中恢复,并且可以同步主数据库和辅助数据库。
所有数据库都有与其关联的日志。这些日志保存数据库更改的记录。如果数据库需要恢复到上次完整脱机备份之后的某个点,则需要使用日志将数据前滚到故障点。
记录选项
通过在数据库连接中添加 {logging: true} 来启用日志记录。日志记录选项分为不同类型。它们如下 -
查询- 返回所有日志查询。它的定义如下 -
{ host: "localhost", ... logging: ["query"] }
error - 返回所有失败查询和错误的日志。它的定义如下 -
{ host: "localhost", ... logging: ["error"] }
schema - 返回模式的日志。
warn - 返回内部 ORM 警告。
info - 返回日志内部 ORM 信息消息。
log - 返回内部 ORM 日志消息。
自定义记录器
自定义日志记录是简单且高度可定制的日志记录选项。我们可以使用下面的代码创建我们自己的记录器类 -
import {Logger} from "typeorm"; export class MyCustomLogger implements Logger { // implement all methods from logger class }
连接选项在 ormconfig.json 中指定,如下所示 -
name: "mysql", type: "mysql", host: "localhost", port: 3306, username: "root", password: "root", database: "test", logger: new MyCustomLogger()