GraphQL 是一个用于 API 的查询语言,它通过定义类型和字段的方式来描述数据。它可以让前端开发者更加灵活地获取数据,而无需依赖后端的 API 接口。MongoDB 是一个流行的 NoSQL 数据库,它支持 JSON 格式的数据存储。在本文中,我们将介绍如何在 MongoDB 中使用 GraphQL 进行查询。
安装依赖
首先,我们需要安装所需要的依赖。我们需要安装以下几个包:
graphql
:GraphQL 的核心包。graphql-yoga
:一个用于构建 GraphQL 服务器的库。mongodb
:MongoDB 的 Node.js 驱动程序。
npm install graphql graphql-yoga mongodb
连接 MongoDB 数据库
我们需要先连接到 MongoDB 数据库。这里我们使用 mongodb
包提供的 MongoClient
类进行连接。我们需要传入 MongoDB 数据库的连接字符串。
-- -------------------- ---- ------- ----- - ----------- - - ------------------- ----- --- - --------------------------------- ----- ------ - --- ---------------- - ---------------- ---- --- ----- -------- ------- - ----- ----------------- ---------------------- -- ---------- - --------
定义 GraphQL Schema
接下来,我们需要定义 GraphQL Schema。Schema 是一个定义数据类型和查询字段的对象。我们定义一个 Query
类型,它包含一个 books
字段,用于查询图书数据。
-- -------------------- ---- ------- ----- - --- - - ------------------- ----- -------- - ---- ---- ---- - ------ ------ ------- ------ - ---- ----- - ------ ------ - -- ----- --------- - - ------ - ----- ------- - ----- -- - ------------ ----- ----- - ----- ---------------------------------------- ------ ------ -- -- --
在上面的代码中,我们定义了一个 Book
类型,包含 title
和 author
两个字段。我们还定义了一个 Query
类型,包含一个 books
字段,它返回一个 Book
类型的数组。
在 resolvers
对象中,我们实现了 books
字段的查询逻辑。我们通过 client.db()
获取到 MongoDB 数据库对象,然后使用 find()
方法查询所有图书数据,并将结果转换为数组返回。
创建 GraphQL 服务器
接下来,我们需要创建一个 GraphQL 服务器。我们使用 graphql-yoga
包提供的 GraphQLServer
类创建服务器。我们需要传入 Schema 和 Resolver 对象。
const { GraphQLServer } = require('graphql-yoga'); const server = new GraphQLServer({ typeDefs, resolvers }); server.start(() => { console.log('GraphQL server started'); });
查询数据
现在我们可以使用 GraphQL 查询语言查询数据了。我们可以使用 Playground 工具进行查询。运行以下命令启动 Playground:
npm install -g graphql-playground graphql-playground
在 Playground 中,我们可以使用以下查询语句查询所有图书数据:
query { books { title author } }
示例代码
完整的示例代码如下:
-- -------------------- ---- ------- ----- - ----------- - - ------------------- ----- - ---- ------------- - - ------------------------ ----- --- - --------------------------------- ----- ------ - --- ---------------- - ---------------- ---- --- ----- -------- - ---- ---- ---- - ------ ------ ------- ------ - ---- ----- - ------ ------ - -- ----- --------- - - ------ - ----- ------- - ----- -- - ------------ ----- ----- - ----- ---------------------------------------- ------ ------ -- -- -- ----- ------ - --- --------------- --------- --------- --- ----- -------- ------- - ----- ----------------- ---------------------- -- ---------- --------------- -- - -------------------- ------ ---------- --- - --------
结论
在本文中,我们介绍了如何在 MongoDB 中使用 GraphQL 进行查询。我们先连接到 MongoDB 数据库,然后定义 GraphQL Schema 和 Resolver,最后创建 GraphQL 服务器。使用 GraphQL 查询语言查询数据非常方便,可以大大简化前端开发工作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676517b276af2b9a20e83fe7