簡體   English   中英

Prisma 更新操作在驗證器中失敗; 使用生成的 `UncheckedUpdateInput` 類型而不是 `UpdateInput` 類型

[英]Prisma update operation failing in validator; using generated `UncheckedUpdateInput` type instead of `UpdateInput` type

我正在嘗試執行更新操作:

  const specialItem = await db.specialItem.update({ where: query, data: formattedUpdate })

該語句中的值formattedUpdate看起來像這樣:

{
  item_name: null,
  drink_type: 'Wine',
  price: 800,
  bar: {
    connect: {
      id: '4486bbc3-5ff8-47c8-99cf-9291c57ebe78'
    }
  },
  event: {
    connect: {
      id: undefined
    }
  },
  related_item: {
    connect: {
      id: undefined
    }
  }
}

此操作在 Prisma 驗證器中失敗並出現以下錯誤:

[1] Unknown arg `bar` in data.bar for type SpecialItemUncheckedUpdateInput. Did you mean `id`? Available args: ...
[1] Unknown arg `event` in data.event for type SpecialItemUncheckedUpdateInput. Did you mean `event_id`? Available args: ...
[1] Unknown arg `related_item` in data.related_item for type SpecialItemUncheckedUpdateInput. Did you mean `related_item_id`? Available args: ...

但是,這些字段絕對在我的模式中:

model SpecialItem {
  id                  String      @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
  created_at          DateTime    @default(now()) @db.Timestamptz(3)
  event               Event?      @relation(fields: [event_id], references: [id], onDelete: Cascade)
  event_id            String?     @db.Uuid
  bar                 Bar         @relation(fields: [bar_id], references: [id], onDelete: Cascade)
  bar_id              String      @db.Uuid
  related_item_id     String?     @db.Uuid
  related_item        Item?       @relation(fields: [related_item_id], references: [id])
  is_recurring        Boolean     @default(false)
  is_inactive         Boolean     @default(false)
  ...
}

錯誤提示的可用參數來自生成的 Prisma 類型ModelNameUncheckedUpdateInput ,但是我相信如果它使用生成的 Prisma 類型ModelNameUpdateInput ,此操作將會成功。 未經檢查的版本直接使用 ID,而常規版本使用連接 object 模式。 我更喜歡使用后者。 為什么 Prisma 期望我滿足類型的未檢查版本? 我可以強制驗證器使用常規版本嗎?

有沒有人遇到過這個? 我認為打破我在別處使用的連接模式沒有意義。

使用 Prisma 4.9.0 版。

我試過搜索,ChatGPT,github,閱讀文檔,但沒有抽雪茄。

您能否修改代碼以獲得此結果:

{
  item_name: null,
  drink_type: 'Wine',
  price: 800,
  bar: {
    connect: {
      id: '4486bbc3-5ff8-47c8-99cf-9291c57ebe78'
    }
  }
}

我不確定,但如果嵌套字段中有undefined ,看起來 Prisma 將使用Unchecked類型

暫無
暫無

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

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