📜  typeorm 通过 id 数组从表中获取数据 - Javascript (1)

📅  最后修改于: 2023-12-03 15:35:24.044000             🧑  作者: Mango

TypeORM 通过 id 数组从表中获取数据

TypeORM 是一个支持各种关系型数据库的 ORM(对象关系映射)框架,使得在 Node.js 中与数据库进行交互更加简单和高效。

在 TypeORM 中,查询一个实体或表中的数据最常见的方法是使用 Repository 对象提供的方法,例如 find()findOne()createQueryBuilder()。但是,当我们想要查询符合特定 ID 列表的行时,该怎么办呢?

下面展示了一种通过 id 数组从表中获取数据的示例方法:

import { getRepository } from "typeorm";
import { Example } from "./entities/Example";

async function getExamplesByIds(ids: number[]): Promise<Example[]> {
  const exampleRepository = getRepository(Example);
  return await exampleRepository
    .createQueryBuilder("example")
    .where("example.id IN (:...ids)", { ids })
    .getMany();
}

首先,我们导入 TypeORM 中的 getRepository() 方法和 Example 实体。然后,我们声明了一个名为 getExamplesByIds() 的异步函数,该函数接受一个 id 数组并返回 Promise 类型的 Example 数组。

接下来,我们使用 getRepository() 方法获取 Example 实体的 Repository 对象,并返回由 createQueryBuilder() 方法创建的查询生成器。在生成器中,我们指定表别名为 example,并使用 where() 方法编写查询条件:id 列表包含在传入的 ids 数组中。最后,我们调用 getMany() 方法,该方法返回符合条件的所有实体记录的 Promise 类型数组。

让我们更详细地了解一下 createQueryBuilder() 中使用的方法:

  • createQueryBuilder(alias?: string):创建基于由传递的别名引用的实体的查询生成器实例,如上例中的 createQueryBuilder("example"),将别名指定为 "example"
  • where(condition: string, parameters?: ObjectLiteral):使用模板字符串指定条件查询,如上例中的 where("example.id IN (:...ids)", { ids }),其中 :...ids将参数ids 分割成逗号分隔列表,{ ids }` 是传递给参数的对象字面量。
  • getMany(): Promise<Entity[]>:返回所有符合条件的实体对象,以 Promise 形式返回。

我们的示例方法现在可以用于获取 Example 表中特定 ID 列表的记录。

希望这篇文章能给你带来有帮助的信息,让你更好地了解 TypeORM 的工作原理。良好的查询方法可以使你的程序更加高效、灵活和易于维护。