如何将请求正文传递到GraphQL上下文?

我目前正在尝试将请求主体放到上下文中,因为正文的一部分包含需要解码的JWT。 但是,当我尝试以下我得到上下文的未定义:

app.use('/', graphqlHTTP((req) => ({ schema: Schema, context: req.body, pretty: true, graphiql: false }))); 

我退出了请求,我没有看到身体在那里。 我正在使用名为react-reach的库,它将以下内容添加到请求中的正文:

  { query: {...}, queryParams: {...}, options: { token: '...' // <-- I'm passing the token into options } } 

我知道身体正在被解释,因为我身体的查询/突变正在被解释和执行。 当传递到上下文似乎无法find它。

除非您正在使用额外的身体分析器中间件,否则您的req.bodyundefined 。 从Express文档:

req.body

包含请求正文中提交的键值对数据。 默认情况下,它是未定义的,并且在使用body-parser和multer等身体分析中间件时被填充。 http://expressjs.com/en/api.html#req.body

graphqlHTTP正在做自己的事情来parsing请求体(见这里 ),这就是为什么你的查询/突变工作。

添加中间件(比如body-parser或者multer)来parsing请求体应该使其在req.bodyreq.body ,然后你的上下文应该被填充你正在寻找的内容。