Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

506
Vistas
La restricción única falló en la restricción: `User_Account_userId_key` en prisma

hola tengo tres modelos

 model User { user_id Int @id @default(autoincrement()) email String @unique name String? User_Account User_Account[] } model Account { account_id Int @id @default (autoincrement()) @unique email String bank String createdAt DateTime @default(now()) User_Account User_Account[] } model User_Account { id Int @id @default(autoincrement()) accountId Int userId Int User User @relation(fields: [userId], references: [user_id]) Account Account @relation(fields: [accountId], references: [account_id]) }

Estoy tratando de sembrar mi base de datos así

 const data = [ { id: 1, email: 'pranit1@mf.com', name: 'Pranit1', bank: 'VCB', ids: [1,1] }, { id: 2, email: 'pranit1@mf.com', name: 'Pranit1', bank: 'ACB', ids: [1,2] }, { id: 3, email: 'pranit3@mf.com', name: 'Pranit3', bank: 'VCB', ids: [2,3] } ] const users = await prisma.$transaction( data.map(user => prisma.user.upsert({ where: { email: user.email }, update: {}, create: { name: user.name, email:user.email }, }) ) ); const accounts = await prisma.$transaction( data.map(account => prisma.account.upsert({ where: { account_id: account.id }, update: {}, create: { bank: account.bank , email :account.email }, }) ) ); const user_accounts = await prisma.$transaction( data.map(uacc =>{ console.log(uacc); return prisma.user_Account.upsert({ where: { id: uacc.id }, update: {id: uacc.id}, create:{ userId: uacc.ids[0], accountId: uacc.ids[1] }, })} ) );

Sin embargo, estoy recibiendo un

La restricción única falló en la restricción: User_Account_userId_key

Los datos en prisma studio se generan como se muestra en la imagen ingrese la descripción de la imagen aquí

Simplemente estoy tratando de crear usuarios y cuentas y un usuario puede asociarse con varias cuentas. Su relación se muestra en la tabla User_Account. No puedo ver por qué recibo un error de restricción única cuando no tengo la etiqueta @unique en el ID de usuario

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No pude reproducir el error de mi lado. Pero sospecho que ya tenía registros en la base de datos y entran en conflicto con las identificaciones de su sembradora. Además, hay algunas mejoras que podría hacer en su esquema para que sea más simple.

  1. Como no tiene detalles adicionales sobre la relación de muchos a muchos, puede deshacerse del modelo User_Account y dejar que Prisma lo maneje por usted.
  2. En el sembrador, puede aprovechar las funciones de anidamiento de Prisma para no tener que vincular manualmente los registros. De esa manera, no tienes que preocuparte por las identificaciones.

sugerencia de esquema.prisma

 model User { id Int @id @default(autoincrement()) email String @unique name String? accounts Account[] } model Account { id Int @id @unique @default(autoincrement()) email String bank String users User[] createdAt DateTime @default(now()) }

sugerencia de seed.js

 const { PrismaClient } = require("@prisma/client"); const prisma = new PrismaClient(); async function main() { const usersData = [ { email: "pranit1@mf.com", name: "Pranit1", banks: ["VCB", "ACB"], }, { email: "pranit3@mf.com", name: "Pranit3", banks: ["VCB"], }, ]; const users = await prisma.$transaction( usersData.map((user) => prisma.user.upsert({ where: { email: user.email }, update: {}, create: { name: user.name, email: user.email, accounts: { create: user.banks.map((bank) => ({ email: user.email, bank, })), }, }, }) ) ); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda