EntityManager API

  • connection - 使用EntityManager连接。
  1. const connection = manager.connection;
  • queryRunner - EntityManager使用的查询运行器。仅在 EntityManager 的事务实例中使用。
  1. const queryRunner = manager.queryRunner;
  • transaction - 提供在单个数据库事务中执行多个数据库请求的事务。更多关于 事务.
  1. await manager.transaction(async manager => {
  2. // NOTE: you must perform all database operations using the given manager instance
  3. // it's a special instance of EntityManager working with this transaction
  4. // and don't forget to await things here
  5. // 注意:你必须使用给定的管理器实例执行所有数据库操作,
  6. // 它是一个使用此事务的EntityManager的特殊实例。
  7. // 在这里处理一些操作
  8. });
  • query - 执行原始 SQL 查询。
  1. const rawData = await manager.query(`SELECT * FROM USERS`);
  • createQueryBuilder - 创建用于构建 SQL 查询的 query builder。更多关于 QueryBuilder.
  1. const users = await manager
  2. .createQueryBuilder()
  3. .select()
  4. .from(User, "user")
  5. .where("user.name = :name", { name: "John" })
  6. .getMany();
  • hasId - 检查给定实体是否已定义主列属性。
  1. if (manager.hasId(user)) {
  2. // ... 做一些需要的操作
  3. }
  • getId - 获取给定实体的主列属性值。如果实体具有复合主键,则返回的值将是具有主列的名称和值的对象。
  1. const userId = manager.getId(user); // userId === 1
  • create - 创建User的新实例。 接受具有用户属性的对象文字,该用户属性将写入新创建的用户对象。(可选)
  1. const user = manager.create(User); // same as const user = new User();
  2. const user = manager.create(User, {
  3. id: 1,
  4. firstName: "Timber",
  5. lastName: "Saw"
  6. }); // 和 const user = new User(); user.firstName = "Timber"; user.lastName = "Saw"; 一样
  • merge - 将多个实体合并为一个实体。
  1. const user = new User();
  2. manager.merge(User, user, { firstName: "Timber" }, { lastName: "Saw" }); // 和user.firstName = "Timber"; user.lastName = "Saw";一样
  • preload - 从给定的普通 javascript 对象创建一个新实体。 如果实体已存在于数据库中,则它将加载它(以及与之相关的所有内容),将所有值替换为给定对象中的新值,并返回新实体。 新的实体实际上是从与新对象代替所有属性的数据库实体加载。
  1. const partialUser = {
  2. id: 1,
  3. firstName: "Rizzrak",
  4. profile: {
  5. id: 1
  6. }
  7. };
  8. const user = await manager.preload(User, partialUser);
  9. // user将包含partialUser中具有partialUser属性值的所有缺失数据:
  10. // { id: 1, firstName: "Rizzrak", lastName: "Saw", profile: { id: 1, ... } }
  • save - 保存给定实体或实体数组。如果实体已存在于数据库中,则会更新。如果该实体尚未存在于数据库中,则将其插入。它将所有给定实体保存在单个事务中(在实体管理器而不是事务性的情况下)。还支持部分更新,因为跳过了所有未定义的属性。 为了使值为NULL,你必须手动将该属性设置为等于null
  1. await manager.save(user);
  2. await manager.save([category1, category2, category3]);
  • remove - 删除给定的实体或实体数组。它删除单个事务中的所有给定实体(在实体的情况下,管理器不是事务性的)。
  1. await manager.remove(user);
  2. await manager.remove([category1, category2, category3]);
  • insert - 插入新实体或实体数组。
  1. await manager.insert(User, {
  2. firstName: "Timber",
  3. lastName: "Timber"
  4. });
  5. await manager.insert(User, [
  6. {
  7. firstName: "Foo",
  8. lastName: "Bar"
  9. },
  10. {
  11. firstName: "Rizz",
  12. lastName: "Rak"
  13. }
  14. ]);
  • update - 通过给定的更新选项或实体 ID 部分更新实体。
  1. await manager.update(User, { firstName: "Timber" }, { firstName: "Rizzrak" });
  2. // 执行 UPDATE user SET firstName = Rizzrak WHERE firstName = Timber
  3. await manager.update(User, 1, { firstName: "Rizzrak" });
  4. // 执行 UPDATE user SET firstName = Rizzrak WHERE id = 1
  • delete - 根据实体 id 或 ids 或其他给定条件删除实体:
  1. await manager.delete(User, 1);
  2. await manager.delete(User, [1, 2, 3]);
  3. await manager.delete(User, { firstName: "Timber" });
  • count - 符合指定条件的实体数量。对分页很有用。
  1. const count = await manager.count(User, { firstName: "Timber" });
  • increment - 增加符合条件的实体某些列值。
  1. await manager.increment(User, { firstName: "Timber" }, "age", 3);
  • decrement - 减少符合条件的实体某些列值。
  1. await manager.count(User, { firstName: "Timber" }, "age", 3);
  • find - 查找指定条件的实体。
  1. const timbers = await manager.find(User, { firstName: "Timber" });
  • findAndCount - 查找指定条件的实体。还会计算与给定条件匹配的所有实体数量,但忽略分页设置(fromtake 选项)。
  1. const [timbers, timbersCount] = await manager.findAndCount(User, { firstName: "Timber" });
  • findByIds - 按 ID 查找多个实体。
  1. const users = await manager.findByIds(User, [1, 2, 3]);
  • findOne - 查找匹配某些 ID 或查找选项的第一个实体。
  1. const user = await manager.findOne(User, 1);
  2. const timber = await manager.findOne(User, { firstName: "Timber" });
  • findOneOrFail - 查找匹配某些 ID 或查找选项的第一个实体。 如果没有匹配,则 Rejects 一个 promise。
  1. const user = await manager.findOneOrFail(User, 1);
  2. const timber = await manager.findOneOrFail(User, { firstName: "Timber" });
  • clear - 清除给定表中的所有数据(truncates/drops)。
  1. await manager.clear(User);
  • getRepository - 获取Repository以对特定实体执行操作。更过关于 Repositories.
  1. const userRepository = manager.getRepository(User);
  • getTreeRepository - 获取TreeRepository以对特定实体执行操作。更多关于Repositories.
  1. const categoryRepository = manager.getTreeRepository(Category);
  • getMongoRepository - 获取MongoRepository以对特定实体执行操作。更多关于MongoDB.
  1. const userRepository = manager.getMongoRepository(User);
  1. const myUserRepository = manager.getCustomRepository(UserRepository);
  • release - 释放实体管理器的查询运行器。仅在手动创建和管理查询运行器时使用。
  1. await manager.release();