我尝试在TypeORM中模拟以下情况:
[ItemContainer]-(0..1)---(0..n)-[ContainableItem]-(0..n)---(0..1)-[ItemLocation]
字符串
或者说:ContainableItem
可以在ItemContainer
中,也可以在ItemLocation
中。实际上,它不可能同时出现在两个地方,但这对手头的问题并不重要。另外,我想指出的是,ItemContainer
和ItemLocation
之间没有重叠,它们是完全不同的实体。
我尝试通过在ItemContainer
和ItemLocation
上放置一个指向ContainableItem
的one-to-many
来模拟这种情况。
但是我很难从ContainableItem
的Angular 对many-to-one
关系进行建模。我如何告诉TypeORM ContainableItem.parent
指向ItemContainer
还是ItemLocation
?
ContainableItem Schema(snippet)
{
...
relations: {
parent: {
type: 'many-to-one',
target: ItemContainer.name || ItemLocation.name,
inverseSide: nameof<ItemContainer |ItemLocation >((cl) => cl.items),
},
},
...
}
型
1条答案
按热度按时间cdmah0mi1#
据我所知,你必须创建2列,可以为ItemContainer和ItemLocation都空。然后,如果项目在位置可用,你可以把位置ID和离开项目容器空或如果项目在itemcontainer然后你可以把容器ID那里,并离开项目位置空。我认为这是你想要的。