我在
TypeORM
后端上使用 NestJS
进行以下查询:PostgreSQL
在
const queryBuilder = this.usersRepository
.createQueryBuilder('user')
.select([
'user.id',
'userWallets.balance',
'userWallets.currency',
])
.leftJoin('user.userWallets', 'userWallets')
中定义了与 UserWallet 的一对多关系。
user entity
以及与用户的多对一
@OneToMany(() => UserWallet, (userWallet) => userWallet.user)
userWallets: UserWallet[];
user wallet entity
每个用户有两个钱包,因此当我按照上面的方式编写查询时,我得到了预期的 userWallet 数组,但它始终只有一个元素。如果我用
@ManyToOne(() => User, (user) => user.userWallets)
user: User;
编写查询,那么我会在 userWallets 数组中得到预期的两个元素。
leftJoinAndSelect
我认为通过在主
const queryBuilder = this.usersRepository
.createQueryBuilder('user')
.select([
'user.id',
])
.leftJoinAndSelect('user.userWallets', 'userWallets')
中包含用户钱包字段我可以得到所有这些,但似乎有区别,我在 TypeORM 文档或其他地方找不到任何说明。有什么区别?
select