当模型有循环依赖关系时,Loopback会报告一个错误。我正在寻找一种方法来解决这个问题而不改变模型。
如果一个模型与自身相关,解决方案似乎是使用Getter.fromValue()。然而,当关系通过更多的模型循环时,这个解决方案似乎不是那么有用。
我们假设A引用B,B引用C,C引用A,那么当遵循LB4文档时,存储库会是这样的。
Repository A:
constructor(
@repository(BRepo) private bGetter: Getter<BRepo>,
...
Repository B:
constructor(
@repository(CRepo) private cGetter: Getter<CRepo>,
...
Repository C:
constructor(
@repository(ARepo) private aGetter: Getter<ARepo>,
...
但这会导致循环依赖失败。那么问题是--如何在不改变模型依赖关系的情况下解决这个问题。
解决方案似乎是将存储库绑定为Singletons。
@bind({scope: BindingScope.SINGLETON})
export class Repository ...
默认绑定为瞬态,会触发循环依赖性检查。