Get a Quote Right Now

Edit Template

 Custom Repository

It’s common practice assigning a repository instance to a globally exported variable, and use this variable across your app, for example:

// user.repository.ts
export const UserRepository = dataSource.getRepository(User)

// user.controller.ts
export class UserController {
    users() {
        return UserRepository.find()
    }
}

In order to extend UserRepository functionality you can use .extend method of Repository class:

// user.repository.ts
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()
    },
})

// user.controller.ts
export class UserController {
    users() {
        return UserRepository.findByName("Timber", "Saw")
    }
}

Share

Leave a Reply

Your email address will not be published. Required fields are marked *