TypeORM - 使用存储库

存储库特定于一个实体。换句话说,每个实体都有自己的内置存储库,可以使用连接对象的 getRepository() 方法访问它,如下所示 −

const studRepository = manager.getRepository(Student);

一旦创建了学生存储库对象,就可以使用它来执行学生对象的所有数据库操作。

存储库类型

存储库 分为四类。它们如下 −

存储库

实体的默认存储库,可以使用 getRepository() 方法访问它,如下所示 −

const studRepository = manager.getRepository(Student);

现在,studRepository 可用于查询学生表

TreeRepository

用于树状结构实体,可以使用 getTreeRepository() 方法访问,如下所示 −

const studcaRepository = manager.getTreeRepository(Student);

MongoRepository

在 mongoDB 操作实体内使用,可以使用 getMongoRepository() 方法访问,如下所示 −

const detailsRepository = manager.getMongoRepository(Details);

CustomRepository

用于自定义存储库,可以使用下面指定的 getCustomRepository() 方法访问它,

const myUserRepository = manager.getCustomRepository(UserRepository);

存储库 API

让我们在本章中学习 EntityManager 的最重要方法。

manager

我们可以使用下面指定的 manager 方法访问 EntityManager −

const manager = storage.manager;

queryRunner

queryRunner 方法返回自定义查询运行器对象,它用于存储库的数据库操作。示例代码如下 −

const queryRunner = storage.queryRunner;

metadata

metadata 返回存储库的元数据。示例代码如下 −

const metadata = storage.metadata;

query

query 方法执行 SQL 查询。简单的选择查询如下所示 −

const qur = await storage.query(`select * from students`);

insert

insert 方法用于向数据库插入新实体或实体数组。示例代码如下 −

await repository.insert({ 
   Name: "Student3", 
   Age: 14 
});

上述查询相当于,

insert into student(Name,age) values("Student3",14)

update

update 用于更新数据库中的现有记录。

await storage.update(1, { Name: "Adam" });

此查询的工作原理与下面提到的查询类似 −

update student SET Name = "Adam" where id = 1

delete

delete 方法将从表中删除指定的记录,

await storage.delete(Student, 1);

这将从 student 表中删除 ID 为 1 的学生。这相当于,

delete from student where id=1;

如果您想按姓名删除,请使用以下查询,

await storage.delete({ Name: "Student1" });

此查询将删除所有姓名为 Student1 的学生

** softDelete 和 restore **

它用于软删除数据,您可以根据学生的 ID 恢复记录。示例代码如下 −

await storage.softDelete(1);

您可以使用以下命令恢复学生记录 −

await storage.restore(1);

删除和恢复的另一种方法是使用 softRemove 和 recover 方法。示例代码如下 −

//查找实体 const enty = await storage.find();

//软删除实体 const entySoftRemove = await storage.softRemove(enty);

并且,您可以使用下面指定的恢复方法恢复它们,

await storage.recover(entySoftRemove);

save

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

remove用于从数据库中删除给定的实体。简单的学生实体可以删除,如下所示 −

await storage.remove(stud);

count

count方法将返回表中可用的记录数,您可以使用它进行分页。示例代码如下 −

const cnt = await storage.count(Student, { age: 12 });

find

find方法用于搜索目的。它从数据库中获取所有记录,如下所示 −

const result = await storage.find({ id: 1 });

findOne

与 find 方法类似,但返回第一个匹配的记录。示例代码如下 −

const result = await storage.findOne({ id: 1 });

clear

clear 方法清除表中的所有数据。示例代码如下 −

await repository.clear();


关于我们 | 隐私条款 | 学习路线
返回顶部