Actualmente necesito extraer una gran cantidad de datos anidados para formatearlos en un objeto de JavaScript para enviarlos a un gráfico como datos. Actualmente estoy permitiendo diez anidados en profundidad, pero puede haber algunos casos en los que esto continúe.
Me pregunto si hay una mejor manera de extraer datos como este, no pude ver nada en los documentos, para extraer datos anidados infinitamente o dinámicamente a través de las relaciones.
Esto es lo que tengo actualmente por ejemplo:
const [result] = await prisma.company.findMany({ where: { users: { some: { email: { contains: session.user.email, }, }, }, }, select: { name: true, users: true, id: true, profiles: { select: { id: true, name: true, image: true, category: { select: { name: true }, }, children: { select: { id: true, name: true, image: true, category: { select: { name: true }, }, children: { select: { id: true, name: true, image: true, category: { select: { name: true }, }, children: { select: { id: true, name: true, image: true, category: { select: { name: true }, }, children: { select: { id: true, name: true, image: true, category: { select: { name: true }, }, children: { select: { id: true, name: true, image: true, category: { select: { name: true }, }, }, }, }, }, }, }, }, }, }, }, }, }, }, });
¿Ha considerado usar la instrucción include
en lugar de select
? Obtiene automáticamente todos los campos que no son de relación, por lo que solo tiene que especificar manualmente los campos de relación. La sección de lecturas anidadas en los documentos de prisma también contiene muchos ejemplos para esto.
En general, si no necesita un control granular sobre qué campos del modelo se devuelven de la consulta, include
es el camino a seguir.
Por favor, consulte mi respuesta a una pregunta muy similar . Creo que podría encontrar esa solución relevante para su caso de uso.