Итак, я пытаюсь перейти от REST к GraphQL, но есть небольшая вещь, которая немного усложняет задачу: запросы, например.
www.example.com?test=testquery: { test: "test" } фактически находится под body: { query: { test: "test" } } в GraphQL. Поэтому мне было интересно, есть ли какое-то промежуточное программное обеспечение или что-то, что могло бы вернуть это обратно.
Я использую body-parser через
var bodyParser =
require("body-parser")
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
extended: true
}))



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если нет конкретной причины, по которой вы хотите проверить и выполнить документ GraphQL самостоятельно, вам, вероятно, следует использовать для этого существующую библиотеку. Два наиболее популярных решения для экспресс-доставки:
//express-graphql
const graphqlHTTP = require('express-graphql');
const { makeExecutableSchema } = require('graphql-tools');
const schema = makeExecutableSchema({
typeDefs,
resolvers,
});
app.use('/graphql', graphqlHTTP({
schema,
graphiql: true,
}));
app.listen(4000);
// apollo-server-express
const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
const server = new ApolloServer({ typeDefs, resolvers });
server.applyMiddleware({ app });
app.listen(4000);
Вы также можете просто использовать apollo-server, который запускает apollo-server-express под капотом.
const { ApolloServer, gql } = require('apollo-server');
// pass in a schema
const server = new ApolloServer({
schema
});
// or let Apollo make it for you
const server = new ApolloServer({
typeDefs,
resolvers,
});
server.listen()
Ни одно из этих решений не требует от вас включения body-parser и предоставления множества дополнительных функций «из коробки».
Я как бы переосмыслил, как выполнять резолверы. Поскольку, поскольку я использую экспресс и использовал REST, я в основном передавал все через
(req, res), но, подумав об этом некоторое время, мне действительно нужно провести предварительную проверку через другую функцию, которая затем вызывает другую функцию для фактического выполнения чтения / записи на мой монго дб.