📅  最后修改于: 2020-10-19 03:44:03             🧑  作者: Mango
实体侦听器用于支持自定义方法并侦听特定事件的实体。我们可以使用装饰器定义任何实体自定义方法。让我们简单地了解装饰器。
订阅服务器用于侦听特定的实体事件。它是从EntitySubscriberInterface实现的。让我们了解一个简单的示例,说明如何在订户中使用实体侦听器。考虑学生实体如下所示-
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.
现在移至文件,您可以看到以下代码-
import {EventSubscriber, EntitySubscriberInterface} from "typeorm";
@EventSubscriber()
export class StudentSubscriber implements EntitySubscriberInterface {
}
现在,在文件中添加以下更改,
import {EventSubscriber, EntitySubscriberInterface,InsertEvent} from "typeorm";
import {Student} from "../entity/Student";
@EventSubscriber()
export class StudentSubscriber implements EntitySubscriberInterface {
listenTo()
{
return Student;
}
afterInsert(event: InsertEvent) {
console.log(event);
}
}
这里,
我们已经使用afterInsert()方法来调用实体事件。同样,您也可以使用其他事件。我们已经配置了ormconfig.json文件。现在,在index.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"]
}
错误-返回所有失败查询和错误的日志。它定义如下-
{
host: "localhost",
...
logging: ["error"]
}
模式-返回模式的日志。
警告-返回内部ORM警告。
info-返回日志内部ORM信息性消息。
日志-返回内部ORM日志消息。
自定义日志记录是简单且高度可自定义的日志记录选项。我们可以使用以下代码创建自己的logger类-
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()