typescript - kan jag använda en delvis entitet för att spara med typeorm?


Så jag har den här tabellstrukturen

--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)
);

Jag vill skapa en ny OrderEventEntity, men jag vill inte ladda Order när jag gör det, eftersom jag bara kommer att få order_id i händelsen.

@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;
}

kan jag göra

const order = new Order({ id: 1234 })
repo.save( new OrderEventEntity({ order: order, ... })

eller liknande (kanske någon delvis last) utan att förlora OneToMany? men fortfarande bara ha order-ID.

Svar #1

Det finns två alternativ:

  1. Definiera kolumnen order_id i din OrderEventEntity
@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;
}
  1. Använd kraftig typkonvertering knepigt
const order = { id: 1234 } as Order;
repo.save( new OrderEventEntity({ order: order, ... })

Relaterade artiklar