首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在graphql中获取mongodb结果

要在GraphQL中获取MongoDB的结果,您需要遵循以下步骤:

  1. 安装必要的依赖项

确保您的项目中安装了以下依赖项:

  • graphql:GraphQL的JavaScript库
  • graphql-tools:用于构建GraphQL schema的工具
  • mongodb:MongoDB的官方Node.js驱动程序

使用以下命令安装这些依赖项:

代码语言:javascript
复制
npm install graphql graphql-tools mongodb
  1. 设置MongoDB连接

在您的项目中创建一个文件(例如db.js),并设置MongoDB连接:

代码语言:javascript
复制
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数据库名称。

  1. 定义GraphQL schema和resolvers

创建一个文件(例如schema.js),并定义GraphQL schema和resolvers:

代码语言:javascript
复制
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集合名称。

  1. 设置GraphQL服务器

创建一个文件(例如server.js),并设置GraphQL服务器:

代码语言:javascript
复制
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);
});
  1. 运行服务器

在命令行中运行以下命令启动服务器:

代码语言:javascript
复制
node server.js

现在,您的GraphQL服务器已经运行在http://localhost:4000/graphql上。您可以使用GraphiQL界面或者任何其他GraphQL客户端查询MongoDB中的数据。

例如,要查询所有用户,您可以发送以下查询:

代码语言:javascript
复制
query {
  users {
    id
    name
    email
  }
}

这将返回MongoDB中users集合的所有文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 构建基于 Rust 技术栈的 GraphQL 服务(2)- 查询服务第一部分

    上一篇文章中,我们对后端基础工程进行了初始化。其中,笔者选择 Rust 生态中的 4 个 crate:tide、async-std、async-graphql、mongodb(bson 主要为 mongodb 应用)。虽然我们不打算对 Rust 生态中的 crate 进行介绍和比较,但想必有朋友对这几个选择有些疑问,比如:tide 相较于 actix-web,可称作冷门、不成熟,postgresql 相较于 mongodb 操作的便利性等。 笔者在 2018-2019 年间,GraphQL 服务后端,一直使用的是 actix-web + juniper + postgresql 的组合,应用前端使用了 typescript + react + apollo-client,有兴趣可以参阅开源项目 actix-graphql-react。 2020 年,笔者才开始了 tide + async-graphql 的应用开发,在此,笔者简单提及下选型理由——

    02
    领券