【问题标题】:Nestjs/TypeORM - How to implement custom search by columnNestjs/TypeORM - 如何实现按列自定义搜索
【发布时间】:2020-07-30 09:31:26
【问题描述】:

我正在使用 TypeORM 和 MySQL 来玩 NestJs。

我已经通过documentation,并且我已经使基本的 CRUD 应用程序在本地运行。 我已按 id 内置搜索(通过存储库),但我还需要按自定义列实现搜索。

例如我有这个实体:

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

  @Column()
  username: string;

  @Column()
  first_name: string;

  @Column()
  last_Name: string;

  @Column()
  gender: string;
  

在我的存储库中,我有这些内置方法:

async findAll(): Promise<User[]> {
    return this.usersRepository.find();
  }

  findOne(id: string): Promise<User> {
    return this.usersRepository.findOne(id);
  }
  

正如预期的那样,它工作得很好。我需要另一个自定义搜索,所以我也可以通过用户名搜索,我该如何实现? 我需要这样的东西:

findByUsername(username: string): Promise<User> {
    return this.usersRepository.findByUsername(username);
  }

我假设我必须实现自定义查询,但我不知道在哪里做:(

【问题讨论】:

    标签: node.js nestjs typeorm


    【解决方案1】:

    这是更简单的解决方案:

    findByUsername(username: string): Promise<User | undefined> {
        return this.usersRepository.findOne({ username }); 
    }
    

    【讨论】:

    • 您是否知道这在哪里记录?我想了解一下。
    • 不确定我以前在哪里读过它:) 但你可以检查 TypeOrm 的打字稿定义文件。
    【解决方案2】:

    您可以使用此代码

    findByName(user_name: string): Promise<User> {
        return this.usersRepository.findOne({ user_name }); 
    }
    

    【讨论】:

      【解决方案3】:

      我通过使用queryBuilder设法实现了它

      这就是我的函数现在的样子:

      findByUsername(username: string): Promise<User | undefined> {
          const user = getRepository(User)
            .createQueryBuilder("user")
            .where("user.username = :username", { username: username })
            .getOne();
      
          return user;
        }
      

      【讨论】:

      • 如果字符串不区分大小写,我们如何比较?
      【解决方案4】:
      const firstUser = await connection
          .getRepository(User)
          .createQueryBuilder("user")
          .where("user.id = :id", { id: 1 })
          .getOne();
      

      【讨论】:

      • 能否请您至少提供一些解释
      猜你喜欢
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      • 2020-09-03
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      相关资源
      最近更新 更多