📜  TypeORM-使用实体管理器

📅  最后修改于: 2020-10-19 03:41:53             🧑  作者: Mango


EntityManager存储库相似,用于管理数据库操作,例如插入,更新,删除和加载数据。虽然存储库处理单个实体,但是EntityManager对于所有实体都是通用的,并且能够对所有实体执行操作。

实体管理器API

我们可以使用下面指定的getManager()方法访问EntityManager-

import { getManager } from "typeorm"; const entityManager = getManager();

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

连接

连接方法将数据库ORM连接返回到特定数据库。示例代码如下-

const connection = manager.connection;

查询运行器

queryRunner方法返回自定义查询运行器对象,并由实体管理器用于数据库操作。示例代码如下-

const queryRunner = manager.queryRunner;

交易

如果调用了多个数据库请求,则事务将在单个数据库事务中执行。获取交易的示例代码如下-

await manager.transaction(async manager => { 
});

询问

query方法执行sql查询。简单的插入查询,如下所示-

const qur = await manager.query(`insert into student(name,age) values('stud2',13)`);

插入

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

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

更新

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

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

此查询的工作方式与以下SQL查询类似,

UPDATE student SET Name = "Adam" WHERE id = 1

删除

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

await manager.delete(Student, 1);

这将删除ID为1的学生记录。

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 connection.manager.save(stud); 
}

这会将新的学生记录添加到数据库中。如果给定的学生在数据库中不存在,则save方法将插入该学生。否则,保存将更新数据库中现有的学生记录。

去掉

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

await manager.remove(stud);

计数

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

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

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

console.log("Loading users from the database..."); 
const students = await connection.manager.find(Student); console.log("Loaded users: ", students);

找一个

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

const stud = await manager.findOne(Student, 1);

明确

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

await manager.clear(Student);