PrismaClientValidationError:更新documents_counter缺失companies参数求助
问题:PrismaClientValidationError - 更新documents_counter时提示缺少companies参数
错误信息
PrismaClientValidationError: Invalid
prisma.documents_counter.update()invocation:{ where: { company_id: 1 }, data: { estimate_count: { increment: 1 }, + companies: { + create: companiesCreateWithoutEstimatesInput | companiesUncheckedCreateWithoutEstimatesInput, + connectOrCreate: companiesCreateOrConnectWithoutEstimatesInput, + connect: companiesWhereUniqueInput + } } }Argument 'companies' is missing.
环境与代码细节
- 使用Prisma 5.0.0版本
- 错误发生在更新
documents_counter表记录时 documents_counter表与companies表在Prisma schema中已定义关联- 使用Prisma提供的
update方法修改记录 - 错误指向update调用中缺失
companies参数
更新操作代码示例
const estimate = await prisma.documents_counter.update({ where: { company_id: 1, // 替换为实际company_id }, data: { estimate_count: { increment: 1, }, // 此处缺失'companies'参数 }, });
部分Prisma Schema
model estimates { id Int @id(map: "invoices_duplicate_pkey") @default(autoincrement()) number String? customer_id Int created_at DateTime @db.Timestamp(6) last_modified_date DateTime? @db.Timestamp(6) exp_at DateTime @default(now()) @db.Timestamp(6) adjustment_total Float? @db.Real adjustment_description String? sub_total Float @db.Real discount_total Float? @db.Real tax_total Float @db.Real total Float @db.Real tax_inclusive Boolean @default(true) warehouse_id Int company_id Int companies companies @relation(fields: [company_id], references: [id], onDelete: NoAction, onUpdate: NoAction) customers customers @relation(fields: [customer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) warehouses warehouses @relation(fields: [warehouse_id], references: [id], onDelete: NoAction, onUpdate: NoAction) estimates_items estimates_items[] @@schema("public") } model companies { id Int @id @default(autoincrement()) name String rnc String? address String? city String? province String? cedula String? username String @unique @default("") chart_of_accounts chart_of_accounts[] companies_users companies_users[] documents_counter documents_counter? documents_ncfs documents_ncfs[] estimates estimates[] invoices invoices[] payment_methods payment_methods[] taxes taxes[] warehouses warehouses[] @@schema("public") } model documents_counter { id Int @id(map: "transaction_counters_pkey") @default(autoincrement()) company_id Int @unique invoice_prefix String? @default("FAC") invoice_count Int? @default(0) estimate_prefix String? @default("EST") estimate_count Int? @default(0) companies companies @relation(fields: [company_id], references: [id], onUpdate: NoAction) @@schema("public") }
已确认documents_counter模型中companies字段定义正确,但添加该字段到更新操作时仍收到相同错误。
解决方案
1. 重新生成Prisma客户端
Prisma客户端代码基于schema生成,若schema更新后未重新生成,会导致客户端逻辑与当前schema不匹配。执行命令:
npx prisma generate
2. 升级Prisma版本
Prisma 5.0.0作为大版本初始版本,可能存在已知bug。建议升级到最新稳定版:
npm install prisma@latest
升级后需重新生成客户端。
3. 改用主键id作为查询条件
尝试通过documents_counter的主键id进行更新,绕开可能的关联字段校验问题:
// 先查询获取对应记录的id const counter = await prisma.documents_counter.findUnique({ where: { company_id: 1 } }); // 用id更新 const updatedEstimate = await prisma.documents_counter.update({ where: { id: counter.id }, data: { estimate_count: { increment: 1 } } });
4. 检查关联定义逻辑
从业务逻辑看,documents_counter的company_id已设为@unique且关联companies表,更新操作无需修改关联关系时,理论上不需要传递companies参数。若上述步骤无效,可检查Prisma是否误将关联字段标记为必填更新项,或暂时调整关联定义的校验规则。
内容的提问来源于stack exchange,提问作者delfincortesb
相关产品推荐
相关产品推荐

