[英]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.