[JavaScript] 求助 nestjs many-to-many 查询失败

我有两个 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, 我只是个菜鸟前端, 实在搞不来了, 大佬们救救孩子吧

发表评论

您的电子邮箱地址不会被公开。