我有两个 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, 我只是个菜鸟前端, 实在搞不来了, 大佬们救救孩子吧
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.