📜  typeorm search like (1)

📅  最后修改于: 2023-12-03 14:48:04.532000             🧑  作者: Mango

TypeORM 搜索操作示例

简介

TypeORM 是一个用于 Node.js 和 TypeScript 的对象关系映射(ORM)库,它允许开发者使用对象和 SQL 语句来操作数据库。

在 TypeORM 中,搜索(Search)操作是非常常见的一种操作。本文将介绍如何使用 TypeORM 进行搜索,包括模糊搜索和精确搜索两种方式。

准备工作

在进行搜索操作之前,需要先安装 TypeORM,可以使用 npm 命令进行安装。

npm install typeorm

同时,在 TypeORM 中使用搜索操作需要先定义实体类和实体类的属性(Column),以及使用 Entity Repository 进行操作。

以下为一个简单的实体类定义示例:

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;
}

通过 @Column 装饰器可以为实体类定义属性,同时也可以在构造函数中定义。

模糊搜索

在进行模糊搜索时,可以使用 SQL 中的 LIKE 运算符。在 TypeORM 中,可以通过 createQueryBuilder 创建查询构建器来进行搜索操作。

以下为一个模糊搜索示例:

import { getRepository } from 'typeorm';
import { User } from './user.entity';

const userRepository = getRepository(User);

const searchName = 'John';
const users = await userRepository.createQueryBuilder('user')
  .where('user.name LIKE :name', { name: `%${searchName}%` })
  .getMany();

以上示例中,%${searchName}% 是传入的搜索关键词,其中 % 表示匹配任意数量的字符。

精确搜索

在进行精确搜索时,可以使用 SQL 中的 = 运算符或 IN 运算符。在 TypeORM 中,可以使用 findfindOne 方法来进行搜索操作。

以下为一个精确搜索示例:

import { getRepository } from 'typeorm';
import { User } from './user.entity';

const userRepository = getRepository(User);

const searchIdList = [1, 2, 3];
const users = await userRepository.find({
  where: {
    id: searchIdList,
  },
});

以上示例中,searchIdList 为一个数组,表示要搜索的 ID 列表。

结束语

TypeORM 提供了非常便捷的搜索操作支持,可以大大增加开发效率。在进行搜索操作时,需要注意实体类的定义和查询构建器的使用。祝愉快开发!