Comments (6)
I still don't follow what you mean. So you don't like the InjectRepository
bit, but are fine with using nest DI in general? You can make the repository injectable, the decorator is needed only when you do not have custom implementation.
This is how the repositories are registered, you can use the same way to register your custom repository:
https://github.com/mikro-orm/nestjs/blob/master/src/mikro-orm.providers.ts#L63
{
provide: CustomAuthorRepository,
useFactory: (em: EntityManager) => em.getRepository(Author),
inject: [EntityManager],
}
Or as long as you name your custom repository the same way as getRepositoryToken()
helper would, you don't need to do anything special:
@Repository()
export class AuthorRepository ... {}
constructor(private repo: AuthorRepository) {}
from nestjs.
You define the custom repository, and it will be used automatically. If you use @Repository()
decorator, you need to make sure the file will be loaded, so the decorator can be executed (without that, the ORM does not know about such repository).
One way to make sure the file will be loaded is to link it from the entity definition. To do so, you can use EntityRepositoryType
, that will also allow inference of the type of the repository:
@Entity()
export class Author {
[EntityRepositoryType]: CustomAuthorRepository;
}
Now this ensures the @Repository()
decorator will be executed and custom repository will be registered. The em.getRepository(Author)
will be correctly typed to CustomAuthorRepository
.
constructor(
@InjectRepository(Author)
private readonly articleRepository: CustomAuthorRepository,
) {}
from nestjs.
Hmmm... Having to go through the @InjectResitory seems a little bit overly roundtrip to me, I was actually hoping for a way to either register it through the module as a provider or something just as services can be registered using the provider
from nestjs.
Ohhh that seems better... Having to put the decorator on the repository is what I was actually concerned about... but removing also do the trick...
from nestjs.
Is there any way to specify [EntityRepositoryType]: CustomAuthorRepository;
while defining entities through EntitySchema
? customRepository: () => CustomAuthorRepository,
seems to not fixing the problem.
from nestjs.
Just put it to the class/interface:
export interface IAuthor4 {
[EntityRepositoryType]: AuthorRepository;
id: number;
name: string;
email: string;
}
export const Author4 = new EntitySchema<IAuthor4>({
name: 'Author4',
properties: {
id: { type: 'number', primary: true },
name: { type: 'string' },
email: { type: 'string', unique: true },
},
customRepository: () => AuthorRepository,
});
You need both, EntityRepositoryType
is for TS inference, customRepository
is for the ORM runtime metadata.
from nestjs.
Related Issues (20)
- Error when trying to query an entity from the repository HOT 3
- How can I take some actions after it successfully connects or fails? HOT 1
- Cannot persist an entity with a 1-to-1 reference to another entity HOT 5
- Cannot persist Read-Only association HOT 3
- Cannot get `@UseRequestContext` to work in a REQUEST scoped BullMQ processor HOT 4
- Populating Nested Field returns the wrong number of associated entities HOT 5
- Relations not working in nestjs HOT 6
- Issue when running tests after upgrading to 5.2.2
- Bump version, compatible with MikroORM V6 HOT 6
- Nestjs, mikro-orm and postgres can't generate table automatically HOT 2
- vitest + mikroorm collection error HOT 4
- findByCursor method not working on sqlite HOT 1
- Testing with multiple testing modules in NestJS and Jest leads to an error during metadata discovery HOT 2
- Issues running Mikro-ORM with NestJS on Vercel platform HOT 1
- MikroOrmMiddleware not found in e2e tests
- feat: add Transactional Decorator HOT 1
- How to listen to connection status?
- Nest cannot export a provider/module that is not a part of the currently processed module (MikroOrmCoreModule). Please verify whether the exported MongoMikroORM is available in this particular context.
- Allow specifying .fork() options for Request-Scoped EntityManager in the MikroOrmModule
- Using multiple databases hustle
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nestjs.