TypeORM:使用 LIKE 运算符(2 个示例)

在 TypeORM 中,Like运算符(带有百分号 % )用于搜索列中的指定模式。这篇简洁的文章将向您介绍使用Like运算符以 2 种不同方式选择数据的 2 个示例:

  • 使用find() 方法
  • 使用查询生成器

关于Like关键字和百分号的快速说明:

  • Like ‘zadmei.com%’ :查找以“zadmei.com”开头的任何值
  • Like ‘%zadmei.com’ :查找以“zadmei.com”结尾的任何值
  • Like ‘%zadmei.com%’ :查找包含“zadmei.com”的任何值(在任何位置)

我们将使用一个名为Post的示例实体(将博客文章存储在三列中:idtitlebody):

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

@Entity()
@Unique(['title'])
export class Post {
    @PrimaryGeneratedColumn()
    id: number;
    
    @Column()
    title: string;
    
    @Column()
    body: string;
}

使用 find() 方法

此示例选择标题包含以下单词的所有博客文章:’zadmei.com’。

import { Like } from 'typeorm';

/*...*/
const postRepository = myDataSource.getRepository(Post);
const posts = await postRepository.find({
      where: { title: Like('%zadmei.com%') },
});

console.log(posts);

使用查询生成器

此代码片段与前面的代码片段执行相同的操作,但方式不同(您不必从 ‘typeorm’ 导入 { Like } ):

const postRepository = myDataSource.getRepository(Post);
const posts = await postRepository
      .createQueryBuilder('post')
      .where('post.title LIKE :title', { title: '%zadmei.com%' })
      .getMany();

console.log(posts);