Repaso
English
Backend y APIsAvanzadoAPI-23

En GraphQL, resolver posts { author { name } } de forma ingenua causa muchas consultas. ¿Cuál es la solución común?

Opciones

  1. Usar endpoints REST en lugar de GraphQL para los datos anidados
  2. Agrupar y guardar en caché las búsquedas por petición con un DataLoader (Opción correcta)
  3. Añadir más índices a las tablas de la base de datos
  4. Desactivar los campos anidados del esquema para todos los clientes

Respuesta

Agrupar y guardar en caché por petición con un DataLoader

Por qué

GraphQL llama a una función resolver por campo. Para 50 posts, el resolver de author se ejecuta 50 veces = 50 consultas (otra vez el problema N+1).

Un DataLoader reúne todos los IDs de autores pedidos en el mismo momento y los carga en UNA consulta (WHERE id IN (...)), y luego da a cada resolver su autor.

Recuerda

N+1 en GraphQL → agrupar con DataLoader.

Términos clave

Practica esta pregunta en Repaso