- 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 - 使用存储库
存储库特定于实体。换句话说,每个实体都有自己的内置存储库,并且可以使用连接对象的 getRepository() 方法进行访问,如下所示 -
const studRepository = manager.getRepository(Student);
一旦创建了学生存储库对象,就可以使用它来执行学生对象的所有数据库操作。
存储库类型
存储库分为四类。它们如下 -
存储库
实体的默认存储库,可以使用getRepository()方法进行访问,如下所示 -
const studRepository = manager.getRepository(Student);
现在,studRepository可以用来查询student表
树存储库
用于树状结构实体,可以使用getTreeRepository()方法进行访问,如下所示 -
const studcaRepository = manager.getTreeRepository(Student);
Mongo存储库
在 mongoDB 操作实体内部使用,可以使用getMongoRepository()方法进行访问,如下所示 -
const detailsRepository = manager.getMongoRepository(Details);
自定义存储库
用于自定义存储库,可以使用getCustomRepository()方法进行访问,如下所示,
const myUserRepository = manager.getCustomRepository(UserRepository);
存储库API
让我们学习本章中EntityManager最重要的方法。
经理
我们可以使用管理器方法访问EntityManager,如下所示 -
const manager = repository.manager;
查询运行器
queryRunner方法返回自定义查询运行程序对象,并由存储库用于数据库操作。示例代码如下 -
const queryRunner = repository.queryRunner;
元数据
元数据返回存储库的元数据。示例代码如下 -
const metadata = repository.metadata;
询问
query方法执行 SQL 查询。简单的选择查询如下所示 -
const qur = await repository.query(`select * from students`);
插入
insert方法用于将新实体或实体数组插入到数据库中。示例代码如下 -
await repository.insert({ Name: "Student3", Age: 14 });
上述查询相当于,
insert into student(Name,age) values("Student3",14)
更新
update用于更新数据库中现有的记录。
await repository.update(1, { Name: "Adam" });
该查询的工作原理与下面提到的类似 -
update student SET Name = "Adam" where id = 1
删除
delete方法将从表中删除指定的记录,
await repository.delete(Student, 1);
这将从学生表中删除 id 为1的学生。它相当于,
delete from student where id=1;
如果您想按名称删除,请使用以下查询,
await repository.delete({ Name: "Student1" });
此查询将删除所有名为Student1的学生
** 软删除和恢复 **
用于软删除数据,可以根据学生的id恢复记录。示例代码如下 -
await repository.softDelete(1);
您可以使用以下命令恢复学生记录 -
await repository.restore(1);
删除和恢复的另一种选择是使用softRemove和恢复方法。示例代码如下 -
//find the entities const enty = await repository.find(); //soft removed entity const entySoftRemove = await repository.softRemove(enty);
并且,您可以使用下面指定的恢复方法来恢复它们,
await repository.recover(entySoftRemove);
节省
save用于将给定实体保存到数据库中。简单的学生实体可以保存如下:
import {Student} from "./entity/Student"; createConnection().then(async connection => { console.log("Inserting a new record into the student database..."); const stud = new Student(); stud.Name = "student1"; stud.age = 12; await repository.save(stud);
这会将新的学生记录添加到数据库中。
消除
remove用于从数据库中删除给定的实体。可以删除简单的学生实体,如下所示 -
await repository.remove(stud);
数数
count方法将返回表中可用记录的数量,您可以使用它进行分页目的。示例代码如下 -
const cnt = await repository.count(Student, { age: 12 });
寻找
find方法用于搜索目的。它从数据库中获取所有记录,如下所示 -
const result = await repository.find({ id: 1 });
找一个
与find方法类似,但返回第一个匹配的记录。示例代码如下 -
const result = await repository.findOne({ id: 1 });
清除
clear方法清除表中的所有数据。示例代码如下 -
await repository.clear();