Prisma @unique null 验证失败

问题描述 投票:0回答:1

我的架构如下:

model Player {
  id        String    @id @default(auto()) @map("_id") @db.ObjectId
  steam_id  String    @unique
  name      String
  level     Int       @default(1)
  elo       Float     @default(1500)
  games     Game[]    @relation(fields: [game_ids], references: [id])
  game_ids  String[]  @db.ObjectId

  clients   Client[]

  user      User?     @relation(fields: [user_id], references: [id])
  user_id   String?    @db.ObjectId @unique

  created_at        DateTime    @default(now())
  updated_at        DateTime    @updatedAt
  @@map("players")
}

如您所见,user_id 是一个可选字段。然而,该关系要求将其标记为唯一。这样做时,我收到以下错误:重复键 { user_id: null }

我在这里能做什么?

mongodb orm schema prisma
1个回答
0
投票

这是目前Prisma不支持的场景。

有一个长期讨论/功能请求,您可以在此处查看。引用该问题:

[..] 我认为我们还不支持这一点的原因是因为 Postgres 是我们支持的唯一以这种方式运行的数据库,其他数据库拒绝重复的 NULL。

我的解决方法是删除唯一约束并检查代码:如果

user_id
为非空,则查询数据库以查看该值是否已存在。如果是,则拒绝插入。

© www.soinside.com 2019 - 2024. All rights reserved.