在 GraphQL 中使用变异操作执行数据库操作
GraphQL 是一种新型的数据查询语言,它可以使前端开发者更加便捷和灵活地与后端进行交互,而变异操作则是 GraphQL 中用于执行对数据的修改操作的语言。与传统的 RESTful API 相比,GraphQL 不仅可以更精简地请求数据,同时还拥有强大的类型检查、多字段查询、数据分页等特性。本文将介绍在 GraphQL 中如何利用变异操作执行数据库的增删改查操作。
- 数据库链接
在使用 GraphQL 进行数据库操作前,我们需要先配置好数据库的连接信息。这里我们以 MongoDB 数据库为例,首先需要安装 mongoose
模块:
npm install --save mongoose
在 app.js
中进行数据库链接的配置:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true });
- 定义数据库模型
在使用 GraphQL 进行数据库操作前,我们还需要定义好数据库中每个集合的数据模型。以一个用户信息为例,我们先定义一个 User
数据模型:
const mongoose = require('mongoose'); const userSchema = new mongoose.Schema({ name: String, age: Number, sex: String }); const UserModel = mongoose.model('User', userSchema);
- 定义 GraphQL schema
接下来我们需要在 GraphQL 中定义一个反应数据模型的 schema。我们可以利用 graphql
和 graphql-tools
这两个模块来完成 schema 的定义。先安装这两个模块:
npm install --save graphql graphql-tools
然后在 app.js
中添加以下代码:
-- -------------------- ---- ------- ----- - -------------------- - - ------------------------- ----- -------- - - ---- ---- - ----- ------ ---- --- ---- ------ - ---- ----- - ------ ------ - ---- -------- - ---------------- -------- ---- ----- ---- --------- ---- -------------- ---- ----- ------- ---- ---- ---- -------- ---- -------------- ----- ---- - -- ----- --------- - - ------ - ------ -- -- ------------------ -- --------- - ----------- -------- - ----- ---- --- -- -- - ----- ------- - --- ----------- ----- ---- --- --- ------ --------------- -- ----------- -------- - --- ----- ---- --- -- -- - ------ ------------------------------- - ----- ---- --- --- -- ----------- -------- - -- -- -- - ------ -------------------------------- - - -- ----- ------ - ---------------------- --------- --------- ---展开代码
在以上代码中,我们定义了一个 User
类型,其包含了 name
、age
、sex
三个字段,并在 Query
中定义了一个 users
查询,它将返回所有集合中的用户信息,同时在 Mutation
中定义了三个变异操作,分别为 createUser
、updateUser
、deleteUser
,用于创建、更新、删除用户信息。
- 运行 GraphQL
接下来,我们运行 GraphQL 服务器(在 app.js
中监听端口为 4000
):
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- --- - ---------- ------------------- ------------- ------- --------- ---- ---- ----------------- -------------------- - ------- --- ------ -- --------------------------------展开代码
现在我们就可以在浏览器中访问 http://localhost:4000/graphql
来测试 GraphQL 了。在 GraphQL IDE 中,可以尝试以下三个变异操作:
- 创建一个新用户:
mutation { createUser(name: "Lucas", age: 20, sex: "male") { name age sex } }
返回值:
-- -------------------- ---- ------- - ------- - ------------- - ------- -------- ------ --- ------ ------ - - -展开代码
- 更新一个用户:
mutation { updateUser(id: "6115c8873edbe9782777bd5c", name: "Lucy") { name age sex } }
返回值:
-- -------------------- ---- ------- - ------- - ------------- - ------- ------- ------ --- ------ ------ - - -展开代码
- 删除一个用户:
mutation { deleteUser(id: "6115c8873edbe9782777bd5c") { name age sex } }
返回值:
-- -------------------- ---- ------- - ------- - ------------- - ------- ------- ------ --- ------ ------ - - -展开代码
通过以上操作,我们可以看到 GraphQL 对于数据库操作的基本流程,其实也可以参考此流程执行其他数据库类型的操作。GraphQL 能够更好的发挥出其优点,从而提高开发效率和代码质量,值得我们去深入学习和掌握。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67b9af6e306f20b3a68227d7