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:
-
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
-
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);
- 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.