Javascript graphql查询嵌入在req.body中

Javascript graphql查询嵌入在req.body中,javascript,node.js,express,graphql,Javascript,Node.js,Express,Graphql,所以我试图从REST转移到GraphQL,但有一个小问题让它变得有点难,那就是查询,例如 www.example.com?test=test查询:{test:{test:}实际上位于GraphQL中的主体:{query:{test:{test:}}下。所以我想知道是否有一些中间件或其他东西可以把它移回去 我正在使用body解析器via var bodyParser = require("body-parser") app.use(bodyParser.json()) app.use(bo

所以我试图从REST转移到GraphQL,但有一个小问题让它变得有点难,那就是查询,例如

www.example.com?test=test
查询:{test:{test:}实际上位于GraphQL中的
主体:{query:{test:{test:}}
下。所以我想知道是否有一些中间件或其他东西可以把它移回去

我正在使用
body解析器
via

var bodyParser =
    require("body-parser")
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
    extended: true
})) 

除非有特定的原因需要自己验证和执行GraphQL文档,否则您可能应该使用现有的库进行验证。express的两种更流行的解决方案:

//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()

这些解决方案都不需要包含
主体解析器
,并提供大量现成的额外功能。

我重新思考了如何执行解析器。因为我使用的是express和REST,所以我基本上是通过
(req,res)
传递所有信息,但是考虑了一会儿,我应该通过另一个函数进行初步验证,然后调用另一个函数来实际执行mongo db的读/写操作。