【问题标题】:TypeORM QueryBuilder should return most recent inner joined recordTypeORM QueryBuilder 应该返回最近的内部连接记录
【发布时间】:2022-01-16 13:20:43
【问题描述】:

我正在尝试通过在我的 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];

【问题讨论】:

    标签: javascript node.js postgresql nestjs typeorm


    【解决方案1】:

    你好,你应该试试limit方法。

      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)”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      相关资源
      最近更新 更多