要在GraphQL中获取MongoDB的结果,您需要遵循以下步骤:
确保您的项目中安装了以下依赖项:
graphql
:GraphQL的JavaScript库graphql-tools
:用于构建GraphQL schema的工具mongodb
:MongoDB的官方Node.js驱动程序使用以下命令安装这些依赖项:
npm install graphql graphql-tools mongodb
在您的项目中创建一个文件(例如db.js
),并设置MongoDB连接:
const MongoClient = require('mongodb').MongoClient;
const uri = 'mongodb://localhost:27017';
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
async function connect() {
try {
await client.connect();
console.log('Connected to MongoDB');
return client.db('your_database_name');
} catch (error) {
console.error('Error connecting to MongoDB:', error);
}
}
module.exports = { connect };
请确保将your_database_name
替换为您的MongoDB数据库名称。
创建一个文件(例如schema.js
),并定义GraphQL schema和resolvers:
const { makeExecutableSchema } = require('graphql-tools');
const typeDefs = `
type Query {
users: [User]
}
type User {
id: ID!
name: String!
email: String!
}
`;
const resolvers = {
Query: {
users: async (_, __, { db }) => {
const usersCollection = db.collection('users');
const users = await usersCollection.find().toArray();
return users;
},
},
};
const schema = makeExecutableSchema({ typeDefs, res伪装者olvers });
module.exports = schema;
请确保将users
集合名称替换为您的MongoDB集合名称。
创建一个文件(例如server.js
),并设置GraphQL服务器:
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { connect } = require('./db');
const schema = require('./schema');
const app = express();
app.use(
'/graphql',
graphqlHTTP(async (req, res) => {
const db = await connect();
return {
schema,
context: { db },
graphiql: true,
};
})
);
app.listen(4000, () => {
console.log('Server is running on port 400't);
});
在命令行中运行以下命令启动服务器:
node server.js
现在,您的GraphQL服务器已经运行在http://localhost:4000/graphql
上。您可以使用GraphiQL界面或者任何其他GraphQL客户端查询MongoDB中的数据。
例如,要查询所有用户,您可以发送以下查询:
query {
users {
id
name
email
}
}
这将返回MongoDB中users
集合的所有文档。
领取专属 10元无门槛券
手把手带您无忧上云