GraphQL 是一种用于 API 的查询语言,它提供了一种更有效、更强大和更灵活的方式来查询和操纵数据。而 MongoDB 是一种非关系型数据库,它以文档形式存储数据。在前端开发中,我们常常需要使用 GraphQL 查询 MongoDB 数据库。本文将介绍如何使用 GraphQL 查询 MongoDB 数据库,并提供详细的示例代码。
安装依赖
在使用 GraphQL 查询 MongoDB 数据库之前,我们需要先安装相关的依赖。首先,我们需要安装 graphql
和 graphql-tools
:
npm install graphql graphql-tools
接着,我们需要安装 mongoose
,它是一个用于在 Node.js 中操作 MongoDB 的库:
npm install mongoose
定义数据模型
在使用 GraphQL 查询 MongoDB 数据库之前,我们需要先定义数据模型。在本文的示例中,我们将定义一个 User
模型,它包含 name
和 age
两个字段。在 models/user.js
文件中,定义如下:
const mongoose = require('mongoose'); const userSchema = new mongoose.Schema({ name: String, age: Number }); module.exports = mongoose.model('User', userSchema);
定义 GraphQL Schema
接下来,我们需要定义 GraphQL Schema。在 schema.js
文件中,定义如下:
// javascriptcn.com 代码示例 const { makeExecutableSchema } = require('graphql-tools'); const User = require('./models/user'); const typeDefs = ` type User { id: ID! name: String! age: Int! } type Query { users: [User] } type Mutation { createUser(name: String!, age: Int!): User } `; const resolvers = { Query: { users: () => User.find() }, Mutation: { createUser: (_, { name, age }) => { const user = new User({ name, age }); return user.save(); } } }; module.exports = makeExecutableSchema({ typeDefs, resolvers });
在上面的代码中,我们定义了一个 User
类型,它包含 id
、name
和 age
三个字段。我们还定义了一个 Query
类型,它包含一个 users
字段,该字段返回所有的用户数据。我们还定义了一个 Mutation
类型,它包含一个 createUser
字段,该字段用于创建新的用户数据。
启动 GraphQL 服务器
接下来,我们需要启动 GraphQL 服务器。在 server.js
文件中,定义如下:
// javascriptcn.com 代码示例 const express = require('express'); const { graphqlHTTP } = require('express-graphql'); const mongoose = require('mongoose'); const schema = require('./schema'); mongoose.connect('mongodb://localhost/graphql-demo', { useNewUrlParser: true, useUnifiedTopology: true }); const app = express(); app.use('/graphql', graphqlHTTP({ schema, graphiql: true })); app.listen(4000, () => { console.log('Running a GraphQL API server at http://localhost:4000/graphql'); });
在上面的代码中,我们首先连接 MongoDB 数据库。接着,我们创建一个 Express 应用,并将 GraphQL Schema 作为中间件使用。最后,我们启动服务器,并监听 4000
端口。
使用 GraphQL 查询数据
现在,我们可以使用 GraphQL 查询数据了。我们可以使用任何支持 GraphQL 的客户端工具,例如 GraphiQL
。在浏览器中打开 http://localhost:4000/graphql
,即可进入 GraphiQL
工具。在 GraphiQL
工具中,输入如下查询语句:
{ users { id name age } }
执行上述查询语句后,即可返回所有的用户数据。
我们还可以使用如下的操作来创建新的用户数据:
mutation { createUser(name: "Alice", age: 20) { id name age } }
执行上述操作后,即可创建一个名为 Alice
,年龄为 20
的用户数据。
总结
本文介绍了如何使用 GraphQL 查询 MongoDB 数据库,并提供了详细的示例代码。在实际开发中,我们可以根据需要定义不同的数据模型,并使用 GraphQL 来查询和操作 MongoDB 数据库。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65740de0d2f5e1655dd46970