Search code examples
javascriptnestjstypeorm

Nest JS & TypeORM cannot use findOne properly


I am trying to get a user instance based on id (same happens for other attributes such as email. Inside the Service, this is my code:

@Injectable()
export class UserService {
  @InjectRepository(User)
  private readonly repository: Repository<User>;

  async findOne(id: number): Promise<User> {
    const user = await this.repository.findOne(id);
    return user;
  }
}

and my User entity is:

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

  @Column({ type: 'varchar', length: 120 })
  public name: string;

  @Column({ type: 'varchar', length: 120 })
  public email: string;
}

The problem is that I always get this error: src/api/user/user.service.ts - error TS2559: Type 'number' has no properties in common with type 'FindOneOptions<User>'.

Other methods such as getAll work just fine:

public getAllUsers(): Promise<User[]> {
  return this.repository.find();
}

Solution

  • are you using the latest version of typeorm? Then downgrade it to [email protected] because @nestjs/[email protected] might not support the latest one yet. You can read the changes of [email protected] here: https://github.com/typeorm/typeorm/releases/tag/0.3.0