如何将请求体传递给GraphQL上下文?

时间:2016-05-19 18:20:34

标签: node.js api graphql graphql-js

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

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

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

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

我知道正在解释正文,因为正在解释和执行正文中的查询/突变。传递给上下文时似乎无法找到它。

1 个答案:

答案 0 :(得分:4)

除非您使用其他正文解析器中间件,否则req.bodyundefined。从Express文档:

  

<强> req.body

     

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

graphqlHTTP正在解析请求体(参见here),这就是你的查询/突变工作的原因。

添加中间件(如body-parser或multer)来解析请求正文应该可以在req.body上使用,然后您的上下文应该填充您正在寻找的内容。