是否根据请求创建了自定义存储库实例?

时间:2019-04-02 18:40:25

标签: mikro-orm

我正在尝试使用mikro-orm和apollo-server-express创建一个应用程序,我想使用批处理和Facebook数据加载器的缓存。

通常,Facebook数据加载器实例是根据请求创建的。如果mikro-orm还在每个请求中创建了自定义存储库实例,并且同一请求中对EntityManager.getRepository()的所有调用都获得了相同的实例,那么它可能是创建数据加载器实例的理想之地。

1 个答案:

答案 0 :(得分:0)

存储库创建为单例,因此每个EntityManager实例仅存在一个实例。您应该手动或通过RequestContext中间件将该EM派生为每个请求有一个实例:

https://b4nan.github.io/mikro-orm/identity-map/

这样,每个请求将具有自己的EntityManager,该请求将具有其自己的存储库实例缓存。

请记住,如果您使用RequestContext,则应从中获取特定于请求的EntityManager,并从那里获取存储库:

// beware that this will return null if the context is not yet started
const em = RequestContext.getEntityManager();

// gets request specific repository instance
const repo = em.getRepository(Book);