Anidamiento
Para manejar el anidamiento en GraphQL, lo tenemos que expresar que existe esta relación desde el motor de GraphQL.
para hacer esto, vamos a crear un nuevo tipo en el esquema:
# expresamos una relación entre producto y categoria, añadiendola en su tipo
type Product {
id: ID!
name: String!
price: Float!
description: String!
image: String!
createdAt: String!
categoryId: ID!
category: Category!
}
# creamos el tipo de la categoria
type Category {
id: ID!
name: String!
image: String!
}
Si probamos realizar entonces la query obteniendo la categorÃa del producto:
{
products {
id
name
category {
name
}
}
}
VerÃamos que lo podemos hacer sin ningún problema. Esto es increÃble porque expresar la relación de los productos se puede hacer solo definiéndola de manera explicita en el esquema, sin necesidad de que definamos los resolvers, esto debido a que GraphQL no se mete directamente con el backend, simplemente es un lenguaje de consulta, y esto es posible ya que ya tenemos definido en nuestro backend las relaciones en nuestros productos, y definiéndolas en el esquema, lo hacemos evidente a la hora de que GraphQL lo consulte.
Esto es muy útil para que desde el lado del cliente no tengamos demasiada información innecesaria, lo cual es un problema constante a la hora de usar REST API, pero con GraphQL podemos pedir solo la información que necesitamos y no toda la información.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?