typescript - 我可以使用部分實體來使用 typeorm 儲存嗎?
所以我有這個表結構
--changeset 0004-order:ccushing
create table if not exists "order"."order"
(
id uuid primary key not null default uuid_generate_v4(),
state uuid references "order".order_status
);
--changeset 0004-h0-table-order_event_type:ccushing
create table if not exists "order".order_event_type
(
id uuid primary key not null default uuid_generate_v4(),
key text unique not null
);
--changeset 0004-h1-table-order_event:ccushing
create table if not exists "order".order_event
(
id uuid primary key not null default uuid_generate_v4(),
order_id uuid not null references "order"."order" (id),
event_type uuid not null references "order".order_event_type (id),
event jsonb not null,
unique (order_id, event),
unique (order_id, event_type)
);
我想創建一個新的 OrderEventEntity,但我不想在做這件事時加載 Order,因為我只會在事件中獲取 order_id。
@Entity('order.order_event')
export default class OrderEventEntity implements Identifiable<string> {
@PrimaryGeneratedColumn({ type: 'uuid' })
readonly id!: string;
@ManyToOne(() => OrderEventTypeEntity, ({ event }) => event)
readonly eventType!: string;
@ManyToOne(() => OrderEntity, ({ events }) => events)
readonly order!: OrderEntity;
}
我能做
const order = new Order({ id: 1234 })
repo.save( new OrderEventEntity({ order: order, ... })
或類似的(可能是部分加載)而不失去 OneToMany?但仍然只擁有訂單 ID。
答案#1
有兩個選擇:
- 在你的
OrderEventEntity中定義order_id欄位
@Entity('order.order_event')
export default class OrderEventEntity implements Identifiable<string> {
@PrimaryGeneratedColumn({ type: 'uuid' })
readonly id!: string;
@ManyToOne(() => OrderEventTypeEntity, ({ event }) => event)
readonly eventType!: string;
@Column()
order_id: string;
@ManyToOne(() => OrderEntity, ({ events }) => events)
readonly order!: OrderEntity;
}
- 使用強制轉型很棘手
const order = { id: 1234 } as Order;
repo.save( new OrderEventEntity({ order: order, ... })
