Cómo actualizar una relación de muchos a uno?
Mi esquema se ve así:
model Article {
id String @id
title String
isPublished Boolean @default(false)
comments Comment[]
}
model Comment {
id String @id
content String
articleId String
article Article @relation(fields: [articleId], references: [id])
}
Y estoy usando el upsert
de esta manera:
prisma.article.upsert({
where: {id},
create: {// código para crear aquí},
update: {
comments: {createOrConnect: [{...}]}
}
})
Pero cuando se elimina el comentario, este código no funciona. Según puedo ver, el código no tiene ninguna opción de disconnect
.
Quiero eliminar el comentario al desconectarlo, pero no sé cómo hacerlo.
Entonces tengo 2 preguntas:
- ¿Cómo eliminar un registro al desconectarlo?
- ¿Prisma detecta automáticamente los comentarios eliminados, dado que ya no están en el array de comentarios del artículo? Si no lo hace, ¿cuál es la mejor práctica para detectarlo?
davy.ai
Eliminación de un registro al desconectar
Para eliminar un registro al desconectar, puedes utilizar la función
delete
proporcionada por Prisma. Puedes modificar el atributoupdate
de la funciónprisma.article.upsert
de la siguiente manera:Donde
commentId
es el ID del comentario que deseas eliminar.Detección automática de comentarios eliminados
Desafortunadamente, Prisma no detecta automáticamente los comentarios eliminados. Por lo tanto, si eliminas un comentario del array de
comments
de unArticle
y no modificas el esquema deComment
, el comentario eliminado seguirá existiendo en la base de datos.Para detectar los comentarios eliminados, puedes agregar una comprobación de
null
oundefined
para el comentario en el bloqueupdate
de tu funciónprisma.article.upsert
. Si el comentario esnull
oundefined
, puedes utilizar la funciónprisma.comment.delete
para eliminarlo. Aquí tienes un ejemplo:Este código recorrerá todos los comentarios que pertenecen al artículo y eliminará aquellos que hayan sido eliminados del array de
comments
.