[英]Django unique_together on postgres: enforced by ORM or DB?
[英]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 numbertype
和columnType
,而不是當你在那里提供相同的值時cascade: [Cascade.REMOVE]
可能沒有按照您的想法進行,即應用程序級級聯,這意味着當您刪除擁有實體(CaseItem)時,它的關系(標有Cascade.REMOVE
)也將被刪除 - 這與onDelete: 'cascade'
相反,我想你想要的是(所以當目標被刪除時 - CsgoItem
實體 - 所有者(所以Case
)也將被刪除
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.