Me encuentro con el error: Error: Query.totalPosts definidos en los resolutores, pero no en el esquema. He estado buscando una solución, pero no puedo encontrar una solución alternativa o alternativa.
mi servidor.js:
const express = require('express') const {ApolloServer} = require('apollo-server-express'); const http = require('http'); const path = require('path'); const {fileLoader, mergeTypes} = require('merge-graphql-schemas'); require('dotenv').config(); // //resolvers`enter code here const resolvers = { Query: { totalPosts: () => 42, me: () => 'Gaia' } }; const typeDefs = mergeTypes(fileLoader(path.join(__dirname, './typeDefs'))); async function startApolloServer(typeDefs, resolvers){ const apolloServer = new ApolloServer({typeDefs, resolvers}); const app = express(); // typeDefs // const typeDefs = mergeTypes(fileLoader(path.join(__dirname, './typeDefs'))); await apolloServer.start(); //this method connects Apollo server to a specific HTTP framework ie: express apolloServer.applyMiddleware({app, path: '/graphql'}); apolloServer.applyMiddleware({ app }); const httpserver = http.createServer(app); // rest endpoint app.get('/rest', function(req, res) { res.json({ data: 'hit rest endpoint' }); }); app.listen(process.env.PORT, function() { console.log(`Server running at http://localhost:${process.env.PORT}`); console.log(`Graphql server running at http://localhost:${process.env.PORT}${apolloServer.graphqlPath}`); }); }; startApolloServer(typeDefs, resolvers);¿Su campo totalPosts existe en typeDef? Como dice la documentación en el paso 3, https://www.apollographql.com/docs/apollo-server/getting-started/ , debe definir su esquema de graphql para usarlo.
Cada servidor GraphQL (incluido el servidor Apollo) utiliza un esquema para definir la estructura de los datos que los clientes pueden consultar. En este ejemplo, crearemos un servidor para consultar una colección de libros por título y autor.
Deberías escribir algo como esto:
type Query { totalPost: Int me: String }Y, cuando construyo una api de graphql en nest.js, el archivo de esquema se crea automáticamente. Supongo que es lo mismo con express. ¿Intentó configurar su API siguiendo este documento: https://www.apollographql.com/docs/apollo-server/v2/integrations/middleware
typeDef parece resolverse automáticamente y enviarse a un archivo de esquema. Puede volver a cargar su servicio cuando deba actualizarse.
const express = require('express'); const { ApolloServer } = require('apollo-server-express'); const { typeDefs, resolvers } = require('./schema'); async function startApolloServer() { const app = express(); const server = new ApolloServer({ typeDefs, resolvers, }); await server.start(); server.applyMiddleware({ app }); app.use((req, res) => { res.status(200); res.send('Hello!'); res.end(); }); await new Promise(resolve => app.listen({ port: 4000 }, resolve)); console.log(`🚀 Server ready at http://localhost:4000${server.graphqlPath}`); return { server, app }; }