Я знаю, что это не обычная проблема, но я не могу обернуться вокруг одной проблемы c части моих отношений с сущностями. Problemati c часть образа ERD
Проблема:
У меня есть две сущности: Doors
и Devices
(камеры). Devices
бывают двух типов: in
и out
. Для каждого Door
у меня есть 2 Devices
, по одному на каждый тип.
Итак, мои сущности теперь выглядят так:
Door.ts:
@Type(() => Device)
@OneToOne(() => Device, device => device.door)
@JoinColumn({name: "device_in_id"})
device_in: Device;
@Type(() => Device)
@OneToOne(() => Device, device => device.door)
@JoinColumn({name: "device_out_id"})
device_out: Device;
Device.ts:
@Type(() => Door)
@OneToOne(() => Door, door => ?????) // "door.device" is obviously not possible with present Door Entity and omitting reverse causes joinColumns error (it expects to find door.device_id or device.door_id).
door: Door;
Я хочу иметь возможность звонить door.device_in
, door.device_out
и device.door
, чтобы избежать явной обработки ограничений (1 + 1 устройство на дверь). Я уже чувствую, что это не выполнимо, по крайней мере, не со стандартными опциями TypeORM.
Конечно, можно угробить device_in_id
и device_out_id
и создать door.id
в Device
, чтобы использовать OneToMany
/ ManyToOne
, но это создаст много проблем с ограничениями.
Может ли быть хорошее типичное решение?