TypeORM:如何选择随机行

在 TypeORM 中,您可以通过将orderBy(‘RANDOM()’) 添加到查询构建器来选择单个或多个随机行。为了更清楚,让我们看下面的几个例子。

假设我们有一个这样的用户实体:

// KindaCode.com
// User entity
import { Entity, PrimaryGeneratedColumn, Column, Unique} from 'typeorm';

@Entity({ name: 'users' })
@Unique(['email'])
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;
}

获取随机用户

const userRepository = myDataSource.getRepository(User);
const randomUser = await userRepository
      .createQueryBuilder('user')
      .select()
      .orderBy('RANDOM()')
      .getOne();

console.log(randomUser);

检索许多随机用户(将getOne() 替换为getMany()并在 take() 方法中指定所需的结果数):

const userRepository = myDataSource.getRepository(User);
const randomUsers = await userRepository
      .createQueryBuilder('user')
      .select()
      .orderBy('RANDOM()')
      .take(10)
      .getMany();

console.log(randomUsers);