我目前正在尝试将请求主体放入上下文中,因为正文的一部分包含需要解码的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
}
}
我知道正在解释正文,因为正在解释和执行正文中的查询/突变。传递给上下文时似乎无法找到它。
答案 0 :(得分:4)
除非您使用其他正文解析器中间件,否则req.body
为undefined
。从Express文档:
<强> req.body 强>
包含请求正文中提交的键值对数据。默认情况下,它是未定义的,并且在使用正文解析器和multer等正文解析中间件时会填充。 http://expressjs.com/en/api.html#req.body
graphqlHTTP
正在解析请求体(参见here),这就是你的查询/突变工作的原因。
添加中间件(如body-parser或multer)来解析请求正文应该可以在req.body
上使用,然后您的上下文应该填充您正在寻找的内容。