使用 express-graphql 访问请求对象
Accessing the request object with express-graphql
根据
http://graphql.org/graphql-js/authentication-and-express-middleware/
To use middleware with a GraphQL resolver, just use the middleware like you would with a normal Express app. The request object is then available as the second argument in any resolver.
但是,当我 运行 我的解析器
module.exports = {
Query: {
books(root, args, context) {
return books;
}
}
};
第二个参数是我的查询参数。然而,第三个参数,除非我将 context
配置 属性 覆盖为 expressGraphql
确实是我的请求对象。
我的完整配置是
app.use(
"/graphql",
expressGraphql({
schema,
graphiql: true
})
);
是文档错了,还是我做错了什么?
都不是:)
即使在使用纯 ole'GraphQL.js(与使用 graphql-tools
或其他库相反)构建架构时,也有几种不同的方法可以传递解析器。
您可以通过创建一个 GraphQLSchema
对象来生成它,例如,在这种情况下,您的解析器包含在您添加的 GraphQLObjectType
中。 repo 就是这样做的。
或者,您可以使用带 buildSchema
的字符串来声明模式。您可以看到正在完成 in the docs。如果你走这条路,传递你的解析器的唯一方法是利用传递到你的端点配置中的 rootValue
对象。通常,传递给解析器的值参数是
- 根
- 参数
- 上下文
- 信息
然而,当你走上面的路线时,你失去了第一个参数......因为我想我们不能将 root 传递给它自己
这很好地说明了为什么如果您要以声明方式生成架构,graphql-tools
是必经之路。
根据
http://graphql.org/graphql-js/authentication-and-express-middleware/
To use middleware with a GraphQL resolver, just use the middleware like you would with a normal Express app. The request object is then available as the second argument in any resolver.
但是,当我 运行 我的解析器
module.exports = {
Query: {
books(root, args, context) {
return books;
}
}
};
第二个参数是我的查询参数。然而,第三个参数,除非我将 context
配置 属性 覆盖为 expressGraphql
确实是我的请求对象。
我的完整配置是
app.use(
"/graphql",
expressGraphql({
schema,
graphiql: true
})
);
是文档错了,还是我做错了什么?
都不是:)
即使在使用纯 ole'GraphQL.js(与使用 graphql-tools
或其他库相反)构建架构时,也有几种不同的方法可以传递解析器。
您可以通过创建一个 GraphQLSchema
对象来生成它,例如,在这种情况下,您的解析器包含在您添加的 GraphQLObjectType
中。 repo 就是这样做的。
或者,您可以使用带 buildSchema
的字符串来声明模式。您可以看到正在完成 in the docs。如果你走这条路,传递你的解析器的唯一方法是利用传递到你的端点配置中的 rootValue
对象。通常,传递给解析器的值参数是
- 根
- 参数
- 上下文
- 信息
然而,当你走上面的路线时,你失去了第一个参数......因为我想我们不能将 root 传递给它自己
这很好地说明了为什么如果您要以声明方式生成架构,graphql-tools
是必经之路。