我在标准模块中有以下 GraphQL 服务器调用:
export default () => {
return graphqlHTTP({
schema: schema,
graphiql: true,
pretty: true,
formatError: error => ({
message: error.message,
locations: error.locations,
stack: error.stack,
path: error.path
})
});
};
与护照一起使用:
app.use(
"/graphql",
passport.authenticate("jwt", { session: false }),
appGraphQL()
);
一切都是工作文件。Passport 扩展了 myreq以获取在我的 GraphQL 调用查询或更改时使用的已记录用户对象:
...
resolve(source, args, context) {
console.log("CURRENT USER OBJECT")
console.log(context.user)
...
一切都很好。
现在我需要扩展我的上下文以添加一些自定义解析器,所以我的第一次尝试是:
export default () => {
return graphqlHTTP({
schema: schema,
graphiql: true,
pretty: true,
context: resolvers,
formatError: error => ({
message: error.message,
locations: error.locations,
stack: error.stack,
path: error.path
})
});
};
正如 GraphQL 文档所说,这会覆盖原始的 req 上下文,并且 my context.useron 查询和突变停止工作。
如何正确扩展当前上下文以添加更多字段,而不是覆盖它?另一个不成功的尝试:
export default (req) => {
return graphqlHTTP({
schema: schema,
graphiql: true,
pretty: true,
context: {
user: req.user,
resolvers: resolvers
},
formatError: error => ({
message: error.message,
locations: error.locations,
stack: error.stack,
path: error.path
})
});
};
这种方法不起作用......我收到以下错误:
user: req.user,
^
TypeError: Cannot read property 'user' of undefined
慕的地10843
相关分类