Для подключения MongoDB к GraphQL серверу существует несколько подходов. Ниже я расскажу о двух наиболее распространенных способах.
1. Использование официального драйвера MongoDB:
- Установите MongoDB и убедитесь, что она работает и доступна.
- Установите необходимые зависимости. В основном, вам понадобятся пакеты graphql
и express-graphql
для создания GraphQL сервера, а также пакет mongodb
для работы с MongoDB.
- Создайте файл schema.graphql
, в котором определите схему GraphQL. Например:
type User { id: ID! name: String! age: Int! } type Query { users: [User!]! }
- В файле server.js
создайте GraphQL сервер, подключите драйвер для работы с MongoDB и реализуйте резолверы для вашей схемы.
const express = require('express'); const { graphqlHTTP } = require('express-graphql'); const { MongoClient, ObjectID } = require('mongodb'); const MONGO_URL = 'mongodb://localhost:27017/mydatabase'; const resolvers = { Query: { users: async () => { const client = await MongoClient.connect(MONGO_URL); const db = client.db(); const collection = db.collection('users'); const users = await collection.find().toArray(); client.close(); return users; } } }; const app = express(); app.use('/graphql', graphqlHTTP({ schema: schema, rootValue: resolvers, graphiql: true })); app.listen(4000, () => { console.log('GraphQL server is running on http://localhost:4000/graphql'); });
- Запустите сервер командой node server.js
и откройте GraphQL Playground в браузере по адресу http://localhost:4000/graphql
.
2. Использование более высокоуровневых инструментов:
- Установите необходимые зависимости. В данном случае мы будем использовать пакет apollo-server
для создания GraphQL сервера и пакет mongoose
для работы с MongoDB.
- Создайте файл schema.graphql
и определите схему GraphQL.
- В файле server.js
создайте GraphQL сервер с помощью apollo-server
, подключите mongoose
к базе данных MongoDB и реализуйте резолверы для вашей схемы.
const { ApolloServer, gql } = require('apollo-server'); const mongoose = require('mongoose'); const MONGO_URL = 'mongodb://localhost:27017/mydatabase'; // Определение схемы GraphQL const typeDefs = gql` type User { id: ID! name: String! age: Int! } type Query { users: [User!]! } `; // Создание модели User с использованием mongoose const User = mongoose.model('User', { name: String, age: Number }); // Реализация резолверов const resolvers = { Query: { users: () => User.find() } }; // Создание сервера const server = new ApolloServer({ typeDefs, resolvers }); // Подключение к базе данных и запуск сервера mongoose.connect(MONGO_URL, { useNewUrlParser: true }) .then(() => { server.listen().then(({ url }) => { console.log(`GraphQL server is running on ${url}`); }); }) .catch(err => { console.error('Error connecting to MongoDB:', err); });
- Запустите сервер командой node server.js
и откройте GraphQL Playground в браузере по адресу, указанному в выводе консоли.
Оба эти способа предоставляют удобный интерфейс для работы с MongoDB через GraphQL. Вы можете выбрать тот, который лучше соответствует вашим потребностям и привычкам.