如何在TypeORM中查询数组 [英] How do I query an array in TypeORM

查看:19
本文介绍了如何在TypeORM中查询数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要创建用户权限管理。我在PostgreSQL中使用TypeORM。以下是用户实体内权限的列定义:

@Column({
  type: 'text',
  array: true
})
permissions: UserPermission[] = [];

这是UserPermission枚举:

export enum UserPermission {
  APP_USER = 'APP_USER',
  USER_ADMIN = 'USER_ADMIN',
  SUPERADMIN = 'SUPERADMIN'
}
我想找一个拥有'SUPERADMIN'权限的用户,但我在说明如何执行此操作的文档/GitHub问题中找不到合适的位置。我已经在这上面花了一个多小时了,我想这是一项简单的任务。

是否有类似";includes";的内容来检查权限数组是否包含特定元素和/或包含多个元素?

const user = await this.userRepository.findOne({
  where: {
    permissions: Includes('SUPERADMIN')
  }
});

如果有人能告诉我正确的文档页面,我将不胜感激:)


编辑:

以下方法适用于我,但我认为它还不是最好的:

@Column('simple-json')
permissions: string[];
let user = await this.userRepository.createQueryBuilder('user')
  .where('user.permissions like :permissions', { permissions: `%"${UserPermission.SUPERADMIN}"%` })
  .getOne();

推荐答案

为什么不使用此方法。适用于我,零错误。

let roles = ['ADMIN', 'STUDENT', SECRETARY];
   let user = await this.userRepository.createQueryBuilder('user')
         .andWhere('user.roles IN (:...roles)')
        .setParameter('roles', ...roles).count()

这篇关于如何在TypeORM中查询数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆