Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

280
Visualizações
Prisma ignora el error de clave externa gql en una relación de uno a muchos

Necesito ayuda para solucionar este error. Tengo una relación de uno a muchos que dicta todos los comentarios/hijos que tendrá una publicación. ver esquema a continuación.

 model Post { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) description String postedBy User? @relation(fields: [postedById], references: [id]) postedById Int? votes Vote[] comments Post[] @relation(name: "comment") parent Post? @relation(name: "comment", fields: [parentId], references: [id]) parentId Int? @default(0) }

Como puede ver, el valor predeterminado de parentId es cero. Siempre quiero que la publicación raíz tenga un parentId de cero para indicar que es una publicación raíz porque no hay Publicación con Id 0 para que la clave externa haga referencia.

Cuando agregué la relación uno-muchos-uno mismo con el valor predeterminado 0, mi prisma se completó correctamente, ignorando los errores de clave externa en mi base de datos como se ve a continuación.

captura de pantalla de la base de datos

¿El campo principal es nulo? o indefinido? porque parentId = 0 no existe. Eso es bueno porque esas son publicaciones raíz. El problema es que cuando trato de hacer una mutación posterior usando gql, obtengo un error de clave externa porque no hay una publicación con id 0. Vea la mutación a continuación.

 const { userId, prisma } = context; if (userId === null) throw new Error("Not Authenticated"); const newPost = await prisma.post.create({ data: { description: args.description, postedBy: { connect: { id: userId } }, parent: { connect: { id: args.parentId } }, }, }); context.pubsub.publish("NEW_POST", newPost); return newPost; }

si reemplazo args.parentId = 0 obtendré el error de clave externa en gql, si args.parentId = 1 no obtendré un error pero la publicación ya no se considera una publicación raíz (mala).

¿Puede alguien por favor ofrecerme alguna orientación con este problema? Me gustaría ignorar el error de clave externa si es posible.

He investigado las acciones referenciales (que se ven a continuación) para establecer un valor predeterminado en la publicación, pero no creo que mi caso de uso sea el propósito de las acciones referenciales, por lo que no estoy seguro de dónde buscar...

 model Post { id Int @id @default(autoincrement()) title String authorUsername String? @default("anonymous") author User? @relation(fields: [authorUsername], references: [username], onUpdate: SetDefault) }
about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda