Saltar al contenido

resolvers anidados y datos relacional en GraphQLJan, 9thIn esta guía, vamos a aprender acerca de la creación … relacionales

marzo 13, 2020

 

En este tutorial, vamos a aprender acerca de cómo crear datos relacional y resolución de anidadas en graphql.

Nota: Si usted no sabe acerca de GraphQL a continuación se refieren a mi anterior tutorial GraphQL introducción para los principiantes

medios de datos

Ver código

relacionales considerar que tenemos un ‘todo aplicación’ con los usuarios y todos, donde cada TODO iscreated por el usuario particular.

let todos = [
{
id: 1,
title: "This is my todo",
body: "sample content in id 1",
userId: 1
},
{
id: 2,
title: "This is my second todo",
body: "sample content in id 2",
userId: 1

},
{
id: 3,
title: "This is my third todo",
body: "sample content in id 3",
userId: 2

}
]

let users = [

{
id: 1,
name: "sai"
},
{
id: 2,
name: "gowtham"
},
]

si algún usuario le pregunta por sus sólo mostramos todos los todos creados por ellos utilizando algún tipo de relación entre el usuario y todos. la escritura de código de inicio de

Let.

Tipo definiciones

type Todo{
id: ID!
title: String!
body: String!
}

type User{
id:ID!
name:String!
}

type Query{
user(id:ID!): User!
}

Hemos creado dos tipos de objetos que son Todo y Uno de usuario y tipo de consulta.

Resolvers

continuación, tenemos que decirle al graphql cómo resolver el campo de usuario en la consulta. La prueba de

const resolvers = {
Query: {
user(parent, args, ctx, info) {

if (!args.id) {
throw new Error('id is required')
}
return users.find(user => user.id === +args.id)
}
}

}

Vamos ahora con la graphql patio de recreo.

de datos relacional

En este paso, estamos creando una relación entre el usuario y todos para ello hay necesidad de Adda nuevo campo llamado todos el tipo de usuario.

type User{
id:ID!
name:String!
todos:[Todo!]!
}

si pide a todos que obtendrá un conjunto de todos donde de forma debe parecerse Todotype sino nosotros no tenemos ninguna resolución del campo de todos.

anidada Resolvers

Vamos a crear un dispositivo de resolución anidada para manejar el campo todos.

const resolvers = {
Query: {
user(parent, args, ctx, info) {

if (!args.id) {
throw new Error('id is required')
}

return users.find(user => user.id === +args.id)

}

},
User: {
todos(parent, args, ctx, info) {

//parent is the root object (User is the parent here)

return todos.filter(todo => todo.userId === parent.id)
}
}

}

En el código anterior, hemos añadido todos anidada de resolución en el objeto de usuario de manera que si cualquier usuario pide no todos tenemos que tener el id de ella de los padres y regresar a sus todos.

Nota: reductores anidadas sólo se ejecutan cuando nos consulta para ese campo anidado de lo contrario, no se ejecuta.

Código

repository