相关疑难解决方法(0)

如何在 Typeorm 中查询数组

我想创建用户权限管理。我在 Postgresql 中使用 Typeorm。这是用户实体中权限的列定义:

  @Column({
    type: 'text',
    array: true
  })
  permissions: UserPermission[] = [];
Run Code Online (Sandbox Code Playgroud)

这是 UserPermission 枚举:

export enum UserPermission {
  APP_USER = 'APP_USER',
  USER_ADMIN = 'USER_ADMIN',
  SUPERADMIN = 'SUPERADMIN'
}
Run Code Online (Sandbox Code Playgroud)

我想找到一位拥有“SUPERADMIN”权限的用户,但我无法在解释如何执行此操作的文档/github 问题中找到正确的位置。我已经为此花费了一个多小时,我想这是一项简单的任务。

是否有类似“包含”的东西来检查权限数组是否包含特定元素和/或包含多个元素?

const user = await this.userRepository.findOne({
  where: {
    permissions: Includes('SUPERADMIN')
  }
});
Run Code Online (Sandbox Code Playgroud)

如果有人可以将我指向正确的文档页面,我将非常感激:)


编辑:

以下对我有用,但我认为它还不是最佳的:

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

postgresql node.js typescript typeorm

5
推荐指数
4
解决办法
2万
查看次数

TypeORM:将不相关的实体映射到数组属性中

我有以下不相关的TypeORM 实体(由于各种原因,我无法在它们上使用一对多关系):

@Entity()
export class Book {
   @PrimaryGeneratedColumn()
   id: number;

   @Column()
   name: string;
}

@Entity()
export class BookCategory {
   @PrimaryGeneratedColumn()
   id: number;

   @Column()
   bookId: number;

   @Column()
   name: string;
}
Run Code Online (Sandbox Code Playgroud)

对于一本书,两个指定的类别和以下查询:

const query = this.bookRepository
      .createQueryBuilder('book')
      .leftJoinAndSelect(BookCategory, 'category', 'book.id = category.bookId');

return query.execute();
Run Code Online (Sandbox Code Playgroud)

我得到以下回复:

[
  {
    "book_id": 1,
    "book_name": "Lorem Ipsum",
    "category_id": 1,
    "category_name": "non-fiction"
  },
  {
    "book_id": 1,
    "book_name": "Lorem Ipsum",
    "category_id": 2,
    "category_name": "documentary"
  }
]
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我得到了 2 个对象。有什么方法可以通过 TypeORM 查询获取以下内容吗?

[
  {
    "id": 1,
    "name": "Lorem …
Run Code Online (Sandbox Code Playgroud)

typeorm nestjs

5
推荐指数
1
解决办法
8342
查看次数

标签 统计

typeorm ×2

nestjs ×1

node.js ×1

postgresql ×1

typescript ×1