在使用express-graphql解析器时,可以通过依赖注入的方式来保持对请求对象的访问。下面是一个示例的解决方案:
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');
const schema = buildSchema(`
type Query {
hello: String
}
`);
const root = {
hello: () => 'Hello World!'
};
const app = express();
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true
}));
const injectRequest = (req, res, next) => {
root.request = req;
next();
};
app.use(injectRequest);
app.listen(3000, () => {
console.log('GraphQL server running on port 3000');
});
现在,你可以通过发送GraphQL请求来测试是否成功注入了请求对象。在浏览器中访问http://localhost:3000/graphql,你将看到GraphQL的调试界面(GraphiQL),并可以执行查询:
query {
hello
}
这将返回一个字符串"Hello World!"。
这是一个基本的示例,展示了如何在保持对请求对象的访问的同时,对express-graphql解析器进行依赖注入。根据具体的业务需求,你可以根据这个思路进行扩展和定制化。
领取专属 10元无门槛券
手把手带您无忧上云