使用Apollo和Express的全局变量是指在使用Apollo和Express框架进行开发时,可以定义一些全局变量,使其在整个应用程序中可访问和共享。
在Apollo中,可以使用apollo-server
库来创建GraphQL服务器。通过定义context
参数,可以将全局变量传递给GraphQL解析器函数。例如:
const { ApolloServer, gql } = require('apollo-server');
const express = require('express');
const app = express();
// 定义GraphQL类型和解析器
const typeDefs = gql`
type Query {
hello: String
}
`;
const resolvers = {
Query: {
hello: (_, __, context) => {
// 在解析器中访问全局变量
const globalVariable = context.globalVariable;
return `Hello, ${globalVariable}!`;
},
},
};
// 创建Apollo服务器
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ req }) => {
// 在上下文中传递全局变量
return {
globalVariable: 'World',
};
},
});
// 将Apollo服务器应用于Express应用程序
server.applyMiddleware({ app });
// 启动Express服务器
app.listen({ port: 3000 }, () =>
console.log(`Server ready at http://localhost:3000${server.graphqlPath}`)
);
在上述示例中,我们定义了一个全局变量globalVariable
,并将其传递给GraphQL解析器函数。在解析器函数中,我们可以访问和使用这个全局变量。
这种使用方式可以方便地在整个应用程序中共享数据,例如用户身份验证信息、数据库连接等。
对于Express框架,可以使用app.set()
方法来设置全局变量。例如:
const express = require('express');
const app = express();
// 设置全局变量
app.set('globalVariable', 'Hello, World!');
// 在路由处理程序中访问全局变量
app.get('/', (req, res) => {
const globalVariable = req.app.get('globalVariable');
res.send(globalVariable);
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
在上述示例中,我们使用app.set()
方法设置了一个名为globalVariable
的全局变量,并在路由处理程序中使用req.app.get()
方法访问该全局变量。
这种方式可以方便地在整个Express应用程序中共享数据,例如配置信息、环境变量等。
总结:
使用Apollo和Express的全局变量可以通过在上下文中传递或使用app.set()
方法来实现。这样可以方便地在整个应用程序中共享数据。
领取专属 10元无门槛券
手把手带您无忧上云