我有两个 Entity:
@Entity()
export class UserEntity { @Column({ unique: true, nullable: false }) id: string @ManyToMany(() => RoleEntity, (r) => r.users, { cascade: true, }) @JoinTable() roles?: RoleEntity[]
} @Entity()
export class RoleEntity { @Column({ unique: true, nullable: false }) name: string @ManyToMany(() => UserEntity, (u) => u.roles) users?: UserEntity[]
}
我想构造一个查询:
api.user.search({ roles: [ 'admin', 'vip', ],
})
通过传递 RoleEntity.name 数组, 能查询到所有拥有这些 role 的 user, 只要 search.roles 和 user.roles 存在交集就能查询出来
也就是说, 王小明的 roles 是 ['loser', 'vip']
, 而我查询 ['admin', 'vip']
, 那么, 王小明也应该被查询出来, 因为他是 vip
但是我的方法报错 Cannot query across many-to-many for property roles
, 我的方法是:
userRepo.findAndCount({ where: { roles: { name: Raw((alias) => `${alias} @> ARRAY[:...roles]`, { roles: ['admin', 'vip'] }), } }
})
网上只有关于 roles 是数组时的查询, 但是我的 roles 是 Entity 数组, 是 many-to-many, 我只是个菜鸟前端, 实在搞不来了, 大佬们救救孩子吧