10

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

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

我注销了 req,但我没有看到里面的 body。我正在使用一个名为react-reach的库,它将以下内容添加到请求的正文中:

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

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

4

1 回答 1

8

除非您使用额外的正文解析器中间件,否则您就是req.bodyundefined来自 Express 文档:

请求正文

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

graphqlHTTP正在做自己的事情来解析请求正文(请参阅此处),这就是您的查询/突变有效的原因。

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

于 2016-10-06T12:36:44.987 回答