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



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

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

存储库是作为单一实例创建的,因此每个EntityManager实例仅存在一个实例。您应该分叉此 EM,以便每个请求有一个实例,无论是手动还是通过RequestContext中间件:

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);

相关内容

  • 没有找到相关文章

最新更新