You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Prisma向MongoDB数组添加新数据时触发唯一约束错误

问题分析与解决方案

错误原因

你的SavedAnime模型关联配置存在问题:将自身的主键id同时作为关联User的外键字段,这意味着每个SavedAnime的id必须等于所属User的id。由于主键具有唯一性,每个用户只能创建一条SavedAnime记录,第二次创建时会因主键重复触发Unique constraint failed on the constraint: _id_错误。

修复步骤

1. 修正Prisma Schema

修改schema.prisma中的SavedAnime模型,添加独立的外键字段并修正关联配置:

model User {
  id       String       @id @default(auto()) @map("_id") @db.ObjectId
  created  DateTime     @default(now())
  name     String
  email    String       @unique
  password String
  saved    SavedAnime[]
}

model SavedAnime {
  id      String @id @default(auto()) @map("_id") @db.ObjectId
  userId  String @db.ObjectId // 新增外键字段,关联User的id
  user    User   @relation(fields: [userId], references: [id]) // 修正关联指向
  title   String
  animeId String
  image   String
}

2. 应用Schema变更

运行命令更新数据库结构:

npx prisma migrate dev

3. 业务代码无需修改

你post.ts中的更新逻辑保持原样即可,Prisma会自动在创建SavedAnime时将userId设置为当前用户的id,实现向用户的saved数组添加多条记录的需求。

内容的提问来源于stack exchange,提问作者Vann.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:04:55