Validación de Nullables y Listas en GradQL

Clase 8 de 24Curso de GraphQL con Node.js

Resumen

¿Cómo se maneja el valor de 'no nulo' en GraphQL?

Bienvenido a una fascinante discusión sobre el manejo de tipos de datos en GraphQL, donde nos enfocaremos en la validación de valores no nulos y la implementación de listas. En el mundo del desarrollo de software, es crucial entender cómo funcionan estos conceptos para garantizar la integridad de tu sistema y el manejo adecuado de datos.

Para garantizar que un campo no pueda ser nulo, GrpahQL nos ofrece el uso de un signo de admiración (!) tras la definición del tipo de dato. Esto significa que el valor es obligatorio y no puede ser nulo. Por ejemplo, si definimos un campo como String!, obligamos a que siempre se retorne un string y no un valor nulo.

¿Qué sucede al no validar valores nulos?

Por defecto, GraphQL permite enviar nulos incluso si hemos determinado un tipo de dato. Este comportamiento general permite flexibilidad, pero carece de robustez en ciertos escenarios. Imaginemos que tenemos una consulta hello que debe devolver un String. Si no validamos para evitar nulos, podríamos recibir un valor nulo sin errores. Esto puede ser inconveniente si esperas ciertos datos en tu aplicación.

type Query {
  hello: String
}

Para evitarlo, simplemente añadimos ! al tipo de dato:

type Query {
  hello: String!
}

¿Qué rol juegan las listas en GraphQL?

Las listas son elementos fundamentales que permiten la agrupación de campos en un solo tipo de dato. Se definen utilizando corchetes alrededor del tipo de dato deseado. Esto se traduce en un array y permite manejar datos más complejos al consultar varias instancias de un tipo específico.

¿Deseas devolver una lista de String? Define tu tipo de esta forma:

type Query {
  getStrings: [String]
}

¿Cómo se combinan 'no nulo' y listas?

Al combinar los conceptos de 'no nulo' y listas, nos encontramos con una funcionalidad poderosa para gestionar datos en GraphQL. Aquí un ejemplo de la aplicación de estas combinaciones:

  1. Array no nulo, sin restricciones internas:

    • Uso: [Int]!
    • Declara que el array en sí no puede ser nulo, pero los valores internos pueden serlo.
  2. Valores internos no nulos en arrays:

    • Uso: [Int!]
    • Garantiza que todos los elementos dentro del array contengan valores no nulos, mientras el array puede ser nulo.
  3. Combinación de restricciones:

    • Uso: [Int!]!
    • Asegura que ni el array ni sus valores internos puedan ser nulos.

Por ejemplo, para manejar las listas con no nulos en un resolver que devuelva un conjunto de números enteros:

type Query {
  getNumbers(numbers: [Int!]!): [Int!]!
}

En este tipo de definición, se garantiza que tanto el array como cada entero dentro del array no sean nulos. Esto fortalece la integridad de datos a través de todo el stack de la aplicación, asegurando que cualquier dato interactúe de forma coherente y predecible.

La combinación de estas características en GraphQL te permite crear aplicaciones robustas al asegurar que los datos manipulados y devueltos cumplen con los requisitos esperados. ¡Sigue explorando el mundo del desarrollo en GraphQL y no dejes de aprender!