首页 > 解决方案 > 如何使用orderby和limit获取相关数据?

问题描述

我在我的 NodeJs 服务器中使用 TypeORM 和 PostgreSQL。我有:

@Entity('tickets')
export class Ticket {
  @PrimaryGeneratedColumn()
  id: number;

  @Column('int')
  from: number;

  @Column()
  ownerName: string;

  @Column({ default: 'new' })
  status: 'new' | 'processing' | 'closed';

  @Column()
  title: string;

  @OneToMany((type) => Message, (message) => message.ticket)
  messages: Message[];
}

@Entity('messages')
export class Message {
  @PrimaryGeneratedColumn()
  id: number;

  @Column('int')
  from: number;

  @Column('int')
  to: number;

  @Column()
  message: string;

  @Column({ default: 'new' })
  status: string;

  @CreateDateColumn()
  date: Date;

  @ManyToOne((type) => Ticket, (ticket) => ticket.messages)
  ticket: Ticket;
}

我正在尝试使用最后一条消息获取一组票,并认为使用 orberby 消息日期和限制(1),但是

return await this.ticketRepo
      .createQueryBuilder('ticket')
      .where('ticket.status = :new', { new: 'new' })
      .orWhere('ticket.status = :processing', { processing: 'processing' })
      .leftJoinAndSelect('ticket.messages', 'messages')
      .getMany();

使用 .order() 或 .limit() 适用于“tickets”,但我需要将它用于ticket.messages!

上面的代码将返回一个包含所有消息的票证数组,但我只需要从票证中获取最后一条消息,我该怎么做?

标签: postgresqltypeorm

解决方案


推荐阅读