Reputation: 25
In this link https://orkhan.gitbook.io/typeorm/docs/custom-repository i read that i must use something like this:
export const UserRepository = dataSource.getRepository(User).extend({
findByName(firstName: string, lastName: string) {
return this.createQueryBuilder("user")
.where("user.firstName = :firstName", { firstName })
.andWhere("user.lastName = :lastName", { lastName })
.getMany()
},
})
So i need do file user.repositories.ts , but i can`t understand how to get dataSource.getRepository()
import { DataSource} from 'typeorm';
import { User } from '../entities/user.entity';
export const UserRepository = dataSource.getRepository(User).extend({})
Upvotes: 0
Views: 2680
Reputation: 478
just create a service and act it like a Repository.
import { Repository } from 'typeorm';
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
@Injectable()
export class UserRepository extends Repository<User> {
constructor(@InjectRepository(User) private userRepo: Repository<User>) {
super(userRepo.target, userRepo.manager, userRepo.queryRunner)
}
findByUsername(username: string) {
return this.userRepo.findOneBy({username})
}
}
Don't forget to add this repo to your containing module. Also, you need to register the User
entity in your containing module
// your module
@Module({
imports: [TypeOrmModule.forFeature(User)],
providers: [UserRepository]
})
Upvotes: 2