【发布时间】:2019-09-30 06:39:46
【问题描述】:
我想用请求范围的缓存来支持我的存储库,类似于 Hibernate 的first-level-cache。我有一些关于如何做到这一点的想法,并将其与typeorm-transactional-cls-hooked 联系起来。
同时,我创建了如下简单的提供者:
@Injectable({ scope: Scope.REQUEST })
export class RequestScopedCache extends Object {
private storage: any = {};
public set(key: string, value: any) {
this.storage[key] = value;
}
public get(key: string) {
return this.storage[key];
}
}
我想将它注入到我的自定义存储库中:
@Injectable()
@EntityRepository(Enqueued)
export class EnqueuedRepository extends Repository<Enqueued> {
@Inject() readonly cache: RequestScopedCache;
public async get(id: string) {
const key = `${this.constructor.name}_${id}`;
const result = this.cache.get(key);
if (result) {
return result;
}
const dbResult = await super.findOne(id);
this.cache.set(key, dbResult);
return dbResult;
}
}
构造函数注入或属性注入都不适用于自定义存储库。看起来事情已经被连接起来,以便调用特定于 typeorm 的构造函数(这似乎是私有的)——注入的第一个参数似乎是一个连接。
然后我尝试了属性注入,但这也不起作用。
如何在自定义存储库中注入我自己的配置?
【问题讨论】:
标签: javascript typescript express nestjs