Chuck's Academy

GraphQL con Node

Uso de Resolvers en GraphQL

Los resolvers son la pieza clave en GraphQL que permiten a tu API manejar cualquier consulta o mutación realizada por el cliente. Son funciones que obtienen o modifican datos de diferentes fuentes y devuelven los resultados al cliente. En este capítulo, exploraremos en profundidad cómo funcionan los resolvers y cómo se pueden utilizar de manera efectiva.

¿Qué es un Resolver?

Un resolver es una función que recibe cuatro argumentos básicos:

  1. parent: El objeto que contiene el resultado de la llamada al resolver del campo padre.
  2. args: Un objeto que contiene los argumentos pasados en la consulta o mutación.
  3. context: Un objeto que es compartido a través de todos los resolvers que se están ejecutando para una operación particular.
  4. info: Información sobre la ejecución, incluyendo el esquema y la operación actual.

Ejemplo Básico de Resolver

Tomando como referencia nuestro esquema anterior:

graphql

Implementación de Resolvers en Node.js

Vamos a implementar los resolvers para las consultas books y book.

Datos Simulados

Primero, definimos algunos datos simulados:

javascript

Implementación de los Resolvers

javascript

Resolvers Anidados

A menudo, necesitarás anidar resolvers para manejar relaciones entre diferentes tipos. En nuestro ejemplo, un libro tiene un autor asociado.

El resolver para el campo author en el tipo Book se ve así:

javascript

Uso del Contexto (context)

El contexto es un objeto que puede contener información global útil para los resolvers, como la autenticación del usuario o la conexión a la base de datos.

Ejemplo de Contexto con Autenticación

Supongamos que tienes una función para obtener la información del usuario autenticado:

javascript

Configura el servidor para incluir el usuario en el contexto:

javascript

En los resolvers, puedes acceder al usuario desde el contexto:

javascript

Uso del info

El argumento info proporciona información sobre la consulta actual, el esquema y más. Generalmente, no necesitarás este argumento en resolvers básicos, pero es útil para casos avanzados.

Ejemplo de uso del info:

javascript

Ejemplo Completo Integrando Contexto y Resolvers

javascript

Resumen

En este capítulo, hemos explorado en profundidad el uso de resolvers en GraphQL, incluyendo:

  • La definición y implementación básica de resolvers.
  • Cómo manejar relaciones entre tipos usando resolvers anidados.
  • El uso del contexto para pasar información global a los resolvers.
  • El uso del argumento info para obtener información sobre la consulta actual.

Con estos conocimientos, puedes crear resolvers eficientes y seguros para manejar consultas y mutaciones en tu API GraphQL. En el próximo capítulo, exploraremos la integración con bases de datos.

[Placeholder: Diagrama mostrando cómo los resolvers interactúan con el esquema, datos y contexto]


Pregúntame lo que sea