sqlite TypeORM:针对不同实体类型的多对一关系

u7up0aaq  于 11个月前  发布在  SQLite
关注(0)|答案(1)|浏览(139)

我尝试在TypeORM中模拟以下情况:

[ItemContainer]-(0..1)---(0..n)-[ContainableItem]-(0..n)---(0..1)-[ItemLocation]

字符串
或者说:ContainableItem可以在ItemContainer中,也可以在ItemLocation中。实际上,它不可能同时出现在两个地方,但这对手头的问题并不重要。另外,我想指出的是,ItemContainerItemLocation之间没有重叠,它们是完全不同的实体。
我尝试通过在ItemContainerItemLocation上放置一个指向ContainableItemone-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),
    },
  },
  ...
}

cdmah0mi

cdmah0mi1#

据我所知,你必须创建2列,可以为ItemContainer和ItemLocation都空。然后,如果项目在位置可用,你可以把位置ID和离开项目容器空或如果项目在itemcontainer然后你可以把容器ID那里,并离开项目位置空。我认为这是你想要的。

相关问题