Saltar al contenido

Cómo dividir un esquema GraphQL largo

Ya no necesitas buscar más en otros sitios porque estás al sitio justo, contamos con la solución que quieres sin problemas.

Solución:

Hay múltiples opciones, aquí hay tres de ellas:

  1. Puede echar un vistazo al blog de Apollo: muestran una forma de modularizar el esquema: Modularización de su código de esquema GraphQL Si desea un ejemplo, puede echar un vistazo a este repositorio de github

  2. Por supuesto, siempre puede usar los literales de la plantilla para incrustar partes del esquema como cadenas:

const countryType = `
type Country 
  _id: ID!
  name: String!
  region: [Region!]!

`

const regionType = `
type Region 
  _id: ID!
  name: String!
  countries: [Country!]

`

const schema = `
$countryType
$regionType

# ... more stuff ...
`

module.exports = buildSchema(schema);
  1. Otra forma es usar el primer enfoque del código y escribir los esquemas en javascript en lugar del lenguaje de esquema graphql.

Conviértalo en una carpeta y una estructura separadas para que los códigos se puedan mantener. Hago lo siguiente:

Repositorio de ejemplo de GraphQL

Captura de pantalla de la estructura del archivo

const express = require('express');
const glob = require("glob");
const graphqlHTTP = require('express-graphql');
const makeExecutableSchema, mergeResolvers, mergeTypeDefs = require('graphql-tools');
const app = express();
//iterate through resolvers file in the folder "graphql/folder/folder/whatever*-resolver.js"
let resolvers = glob.sync('graphql/*/*/*-resolver.js')
let registerResolvers = [];
for (const resolver of resolvers)
// add resolvers to array
    registerResolvers = [...registerResolvers, require('./'+resolver),]

//iterate through resolvers file in the folder "graphql/folder/folder/whatever*-type.js"
let types = glob.sync('graphql/*/*/*-type.js')
let registerTypes = [];
for (const type of types)
// add types to array
    registerTypes = [...registerTypes, require('./'+type),]

//make schema from typeDefs and Resolvers with "graphql-tool package (makeExecutableSchema)"
const schema = makeExecutableSchema(
    typeDefs: mergeTypeDefs(registerTypes),//merge array types
    resolvers: mergeResolvers(registerResolvers,)//merge resolver type
)
// mongodb connection if you prefer mongodb
require('./helpers/connection');
// end mongodb connection
//Make it work with express "express and express-graphql packages"
app.use('/graphql', graphqlHTTP(
    schema: schema,
    graphiql: true,//test your query or mutation on browser (Development Only)
));
app.listen(4000);
console.log('Running a GraphQL API server at http://localhost:4000/graphql');

Valoraciones y reseñas

Puedes añadir valor a nuestro contenido participando con tu experiencia en las críticas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *