簡體   English   中英

Mikro ORM 獨特的裝飾器在以下情況下未被強制執行

[英]Mikro ORM unique decorator is not being enforced when

使用這個實體:

@Entity()
@Unique({ properties: ['case', 'csgoItem'] })
export class CaseItem {
  @PrimaryKey({ type: 'uuid', defaultRaw: 'uuid_generate_v4()' })
  id: string;

  @Property({ type: 'double precision', columnType: 'double precision' })
  probability: number;

  @ManyToOne(() => Case)
  case!: Case;

  @ManyToOne(() => CsgoItem, { cascade: [Cascade.REMOVE] })
  csgoItem!: CsgoItem;
}

當嘗試插入重復項時(基於 case 和 csgItem 的組合,mikroORM 允許我這樣做。如何使@unique裝飾器與關系一起工作?

這是一個架構功能,ORM 無論如何都不會強制執行它,因此您可能有不同步的架構 - 換句話說,沒有創建唯一約束。

嘗試運行npx mikro-orm schema:update --run ,或者更好的是,如果它不僅僅是一個玩具項目,則采用遷移。

關於您提供的代碼的幾點說明:

  • probability是 double,所以它會映射到string ,而不是number ,因為你不能將 double 放入 JS number
  • 不需要一起指定typecolumnType ,而不是當你在那里提供相同的值時
  • cascade: [Cascade.REMOVE]可能沒有按照您的想法進行,即應用程序級級聯,這意味着當您刪除擁有實體(CaseItem)時,它的關系(標有Cascade.REMOVE )也將被刪除 - 這與onDelete: 'cascade'相反,我想你想要的是(所以當目標被刪除時 - CsgoItem實體 - 所有者(所以Case )也將被刪除

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM