前言
在前端开发中,GraphQL 是一种非常流行的数据查询语言,虽然原生 GraphQL 也能够支持数据存储,但它不能直接与数据库进行交互,因此需要结合其他解决方案来进行使用。本教程将介绍如何结合 npm 包 graphql-yoga 和 waterline ORM 来进行数据交互,使得使用 GraphQL 更加轻松便捷。
环境
在开始本教程前,请确保您的计算机上已经安装了 Node.js 和 npm 包管理器。
安装依赖包
首先需要安装以下依赖包:
- graphql-yoga:一个基于 Express 和 GraphQL 构建的高性能 GraphQL 服务端。
- waterline:一个支持多种数据库的 ORM 工具,包含抽象的数据模型和数据查询 API。
您可以使用以下命令进行安装:
npm install graphql-yoga waterline --save
配置
在开始使用 graphql-yoga 和 waterline 之前,需要先进行简单的配置。在项目根目录下创建一个名为 config.js
的文件,并输入以下内容:
-- -------------------- ---- ------- -------------- - - ---------- - --------- - ---------- ----------------------- ------ ---------------------- -- ----------- - -------- - -------- -------- ---- ------------------------------------------ - - - -
其中,adapters
和 datastores
分别指定了使用的数据库适配器和数据存储器的配置信息。在 url
中,您需要将 user
、password
、host
、port
和 database
分别替换为自己的 MySQL 数据库信息。
数据模型
接下来,需要定义数据模型以及数据查询 API。在项目根目录下创建一个名为 models.js
的文件,并输入以下内容:
-- -------------------- ---- ------- ----- --------- - -------------------- ----- ---- - ------------------------ --------- ------- ---------- ---------- ----------- - --- - ----- --------- --------- ----- ------- ----- -------------- ---- -- ----- - ----- --------- --------- ---- -- ------ - ----- --------- --------- ----- ------- ---- - - -- -------------- - --- ----------- ------- ------- ----------- ----------------------------------------- --------- -------------------------------------- --
在上述代码中定义了一个名为 User
的数据模型,包含 id
、name
和 email
三个属性。identity
指定了模型的名称,datastore
指定了使用的数据存储器,在此处为 default
,即先前配置文件中定义的 MySQL 数据库。autoIncrement
参数设置模型的 id
属性自增,确保每个用户实例拥有唯一的标识符。
GraphQL 服务
最后,需要实现 GraphQL 服务。在项目根目录下创建一个名为 index.js
的文件,并输入以下内容:
-- -------------------- ---- ------- ----- - ------------- - - ----------------------- ----- ------ - ------------------- ----- -------- - - ---- ----- - ----------- ------ ----- --------- ------- - ---- -------- - ---------------- -------- ------ --------- ----- - ---- ---- - --- ---- ----- ------- ------ ------- - - ----- --------- - - ------ - -------- ----- --- - -- -- -- - ----- ---- - ----- ---------------------- - -- -- ------ ---- -- --------- ----- -- -- - ----- ----- - ----- ------------------- ------ ----- - -- --------- - ----------- ----- --- - ----- ----- -- -- - ----- ---- - ----- --------------------- - ----- ----- -- ------ ---- - - - ----- ------ - --- --------------- --------- --------- -- --------------------- -- - -- ----- ----- --- --------------- -- -------------------- ------ -- ------- -- ------------------------ --
在上述代码中,首先通过 require
引入 graphql-yoga
、waterline
和定义的 models
对象。接下来,定义了 GraphQL 的类型和相应的 resolvers
,包括 Query
和 Mutation
。在 Query
中,定义了 getUser
和 getUsers
两个方法,分别用于获取单个用户和所有用户,并且 id
参数为必填参数。在 Mutation
中,定义了 createUser
方法,用于创建新用户,并且 name
和 email
参数为必填参数。最后,将 typeDefs
和 resolvers
作为参数创建一个 GraphQLServer
实例,并在 models
初始化完成后启动 GraphQL 服务。
使用
在启动服务之后,可以通过浏览器访问 http://localhost:4000
,并在 GraphQL Playground 中进行测试。以下是一些测试代码:
-- -------------------- ---- ------- -------- - ---------------- -------- ------ -------------------- - -- ---- ----- - - ----- - -------- - -- ---- ----- - -
希望本教程对您学习 GraphQL 的数据库交互有所帮助,感谢阅读!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/93611