Repaso - Creando el tipo Estudiante
Clase 11 de 25 • Curso Práctico de GraphQL con JavaScript
Contenido del curso
- 3

Schema y types
06:09 - 4

Queries y Resolvers
05:09 - 5

Sirviendo el API en la web
07:57 - 6

Custom Types
12:06 - 7

Argumentos
08:11 - 8

Configuración de base de datos
11:21 - 9

Integrando una base de datos
09:58 - 10

Mutations e Inputs
14:29 - 11

Repaso - Creando el tipo Estudiante
16:23 - 12

Nested Types
11:22 - 13

Resolver de tipos
08:45 - 14

Errores
08:50
¿Cómo agregar un nuevo tipo a nuestro directorio?
En el emocionante viaje del desarrollo web, GraphQL se destaca como una herramienta esencial para la gestión eficiente de datos. En este artículo, exploraremos cómo agregar un nuevo tipo a nuestro esquema de GraphQL, junto con los resolvers, queries y mutations necesarios para hacer que todo funcione perfectamente.
¿Qué es un tipo y cómo definirlo?
En GraphQL, un tipo es una definición de cómo deben verse los objetos en nuestra API. Estos determinan qué datos están disponibles para nuestras queries y mutations. Para crear un tipo llamado Student, seguimos estos pasos:
- Declaramos el nuevo tipo
Studentcon campos obligatorios:id: tipoID!name: tipoString!email: tipoString!
Esto se vería de la siguiente manera:
type Student {
id: ID!
name: String!
email: String!
}
¿Cómo crear resolvers y queries para el nuevo tipo?
Una vez que hemos definido el tipo, es necesario crear resolvers que permitan interactuar con los datos. Para los estudiantes, queremos devolver todos los estudiantes o un estudiante específico:
type Query {
students: [Student]
student(id: ID!): Student
}
Los resolvers para estas queries se implementan así:
const resolvers = {
Query: {
students: async () => {
return await StudentModel.find();
},
student: async (_, { id }) => {
return await StudentModel.findById(id);
}
}
}
¿Cómo incluir el input type y las mutations?
El siguiente paso es permitir la creación y edición de estudiantes mediante mutation. Definimos un input type para pasar los datos al resolver:
input StudentInput {
name: String!
email: String!
}
Creamos la mutation para añadir y editar:
type Mutation {
createStudent(input: StudentInput): Student
updateStudent(id: ID!, input: StudentInput): Student
}
Y definimos los resolvers correspondientes:
const resolvers = {
Mutation: {
createStudent: async (_, { input }) => {
const newStudent = new StudentModel(input);
return await newStudent.save();
},
updateStudent: async (_, { id, input }) => {
return await StudentModel.findByIdAndUpdate(id, input, { new: true });
}
}
}
¿Cómo realizar tests a las funciones creadas?
Realizar tests es fundamental para asegurarse de que todo funciona conforme a lo esperado. Puedes utilizar herramientas como Apollo Server para ejecutar instantáneamente tus queries y mutations.
Prueba crear un estudiante con la mutation createStudent:
mutation {
createStudent(input: { name: "Estudiante Uno", email: "estudiante1@email.com" }) {
id
name
email
}
}
Y verifica la correcta inserción consultando todos los estudiantes:
query {
students {
id
name
email
}
}
¿Cómo puedes mejorar y extender esta funcionalidad?
Para quienes desean un reto adicional, intenta crear una nueva función de mutation para eliminar tanto estudiantes como cursos. Esto te ayudará a afinar tus habilidades con GraphQL y prepararte para proyectos más complejos.
No olvides seguir explorando e integrando nuevos tipos, resolvers, y tecnologías a tu stack de desarrollo. ¡Continúa expandiendo tus conocimientos y habilidades en desarrollo web con entusiasmo y dedicación!