使用Prisma自关联添加用户联系人失败,求代码修改方案
问题:Prisma自关联实现用户联系人时,添加联系人功能无法运行
我在Web应用中采用Prisma的自关联方式实现用户联系人功能,定义了如下User模型的Prisma schema:
model User { userId Int @id @default(autoincrement()) registeredAt DateTime @default(now()) firstName String @db.VarChar(250) lastName String @db.VarChar(250) email String @db.VarChar(250) password String @db.VarChar(250) socketId String? @db.VarChar(250) role String @default("user") confirmedAccount DateTime? contacts User[] @relation("ContactsList") addedByContacts User[] @relation("ContactsList") }
目前查询用户联系人的功能正常,但添加联系人的代码无法运行,以下是我编写的添加联系人代码:
try { const addUser = await prisma.user.update({ where: { userId: id }, data: { contacts: { create: { data: {userId: 6} // <- hardcoded testing with this id which i want to add to the current user who is defined by id } } } }) res.status(201).json({ message: 'Added contact' }); } catch (error) { res.status(422).json({ message: error }); return; }
请帮忙指出代码中需要修改的地方,以实现添加联系人的功能。
解决方案
你的核心错误是误用了create操作——create是用来创建新用户记录并关联,但添加联系人的场景是关联已存在的用户,因此必须改用connect操作。具体修改如下:
- 将
contacts下的create替换为connect,直接传入目标用户的ID匹配条件,无需嵌套data字段:
修改后的代码:
try { const addUser = await prisma.user.update({ where: { userId: id }, data: { contacts: { connect: { userId: 6 } // 直接关联已存在的用户 } } }) res.status(201).json({ message: 'Added contact' }); } catch (error) { res.status(422).json({ message: error.message }); // 建议返回error.message,错误信息更清晰 return; }
补充说明
- 若需要一次性添加多个联系人,可使用
connect的数组形式:contacts: { connect: [{ userId: 6 }, { userId: 7 }] }
内容的提问来源于stack exchange,提问作者Marcel Dz
相关产品推荐
相关产品推荐

