繁体   English   中英

TypeORM QueryBuilder 应该返回最近的内部连接记录

[英]TypeORM QueryBuilder should return most recent inner joined record

我正在尝试通过在我的 NestJs 应用程序中使用此查询来获取最近的交易

  public findUsersWithRecentTransactions(): Promise<UserEntity[]> {
    return this.createQueryBuilder('users')
      .innerJoinAndSelect('users.transactions', 'transactions')
      .where(
        '(users.userType = :userTypeParent AND users.registrationStatus = :registrationStatusParent)',
        {
          userTypeParent: UserType.Parent,
          registrationStatusParent: RegistrationStatus.onboarded,
        },
      )
      .orderBy('transactions.created_at', 'DESC').getMany();
  }

这将返回一个按 created_at 日期降序排列的交易数组。 但是,我正在尝试使用查询本身获取最新的事务,这样我就不必遍历实体来获取事务。

const usersWithTransactions = await this.userRepository.findAllUsersWithTransactions();
    for (const user of usersWithTransactions) {
      const mostRecentTransaction = user?.transactions[0];

嗨,你应该尝试限制方法。

  public findUsersWithRecentTransactions(): Promise<UserEntity[]> {
    return this.createQueryBuilder('users')
      .innerJoinAndSelect('users.transactions', 'transactions')
      .where(
        '(users.userType = :userTypeParent AND users.registrationStatus = :registrationStatusParent)',
        {
          userTypeParent: UserType.Parent,
          registrationStatusParent: RegistrationStatus.onboarded,
        },
      )
      .orderBy('transactions.created_at', 'DESC')
      .limit(1) // I include this.
      .getMany();
  }

检查上面的代码。 我添加了“.limit(1)”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM