在现代 Web 开发中,GraphQL 和 Sequelize 都是非常流行的技术。GraphQL 是一种查询语言,用于 API 的设计,而 Sequelize 是一个 Node.js ORM(对象关系映射)库,用于与关系型数据库交互。本文将介绍如何在 Sequelize 中使用 GraphQL。
为什么使用 GraphQL?
GraphQL 在 API 设计方面有很多优点。首先,它允许客户端精确地指定需要的数据,从而减少了不必要的数据传输。其次,GraphQL 支持多个查询和变异,因此可以通过单个请求来执行多个操作。最后,GraphQL 具有强大的类型系统,并且可以轻松地扩展和修改 API。
使用 Sequelize 和 GraphQL
使用 Sequelize 和 GraphQL 可以让我们轻松地将数据库数据暴露给客户端。下面是如何使用它们的详细步骤。
步骤 1:安装依赖项
首先,我们需要安装一些依赖项。在本例中,我们将使用 Express.js 作为 Web 框架,Sequelize 作为 ORM 库,graphql 和 express-graphql 作为 GraphQL 库。
npm install --save express sequelize mysql2 graphql express-graphql
步骤 2:创建数据库
我们需要创建一个数据库,并创建一个表来存储数据。在本例中,我们将创建一个名为 users
的表,其中包含 id
、name
和 email
列。可以使用以下 SQL 语句在 MySQL 中创建此表:
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, PRIMARY KEY (`id`) );
步骤 3:创建 Sequelize 模型
接下来,我们需要使用 Sequelize 创建一个模型来表示 users
表。在 models/user.js
文件中,我们可以编写以下代码:
-- -------------------- ---- ------- ----- - ---------- --------- - - --------------------- ----- --------- - --- ------------------------------------------------------------- ----- ---- - ------------------------ - ----- - ----- ----------------- ---------- ----- -- ------ - ----- ----------------- ---------- ----- - --- -------------- - -----
在这里,我们首先创建了一个 Sequelize 实例,并使用它来定义一个名为 User
的模型。模型包含两个属性:name
和 email
,它们分别表示 users
表中的 name
和 email
列。
步骤 4:创建 GraphQL Schema
接下来,我们需要创建一个 GraphQL Schema,用于定义可用的查询和变异。在 graphql/schema.js
文件中,我们可以编写以下代码:
-- -------------------- ---- ------- ----- - ------------------ -------------- --------------- ------------ ------------- - - ------------------- ----- ---- - -------------------------- ----- -------- - --- ------------------- ----- ------- ------- -- -- -- --- - ----- ------------- -- ----- - ----- ------------- -- ------ - ----- ------------- - -- --- ----- --------- - --- ------------------- ----- -------- ------- -- -- -- ------ - ----- --- ---------------------- -------- -- -- -------------- -- ----- - ----- --------- ----- - --- - ----- --- ----------------------------- - -- -------- --- ----- -- ---------------------- - -- --- ----- ------------ - --- ------------------- ----- ----------- ------- -- -- -- ----------- - ----- --------- ----- - ----- - ----- --- ----------------------------- -- ------ - ----- --- ----------------------------- - -- -------- --- ----- -- ----------------- - -- --- -------------- - --- --------------- ------ ---------- --------- ------------ ---
在这里,我们首先定义了一个名为 UserType
的 GraphQLObjectType,它表示一个用户对象。QueryType
包含两个查询:users
和 user
。MutationType
包含一个变异:createUser
。这些查询和变异都与 Sequelize 模型交互。
步骤 5:创建 Express.js 应用程序
最后,我们需要创建一个 Express.js 应用程序,并将 GraphQL Schema 添加到其中。在 app.js
文件中,我们可以编写以下代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - --------------------------- ----- ------ - ---------------------------- ----- --- - ---------- ------------------- ------------- ------- --------- ---- ---- ---------------- -- -- ------------------- ------- -- ---- --------
在这里,我们创建了一个名为 app
的 Express.js 应用程序,并将 GraphQL Schema 添加到 /graphql
路由中。我们还启用了 GraphiQL,这是一个非常有用的 GraphQL IDE。
步骤 6:测试应用程序
现在,我们已经完成了所有步骤。我们可以使用以下命令启动应用程序:
node app.js
然后,我们可以在浏览器中打开 http://localhost:3000/graphql
,并尝试运行以下查询:
-- -------------------- ---- ------- ----- - ----- - -- ---- ----- - - ----- - -------- ---- - ---- ----- - - -------- - ---------------- -------- ------ -------------------- - -- ---- ----- - -
这些查询和变异将返回我们在 users
表中创建的数据。
结论
在本文中,我们介绍了如何在 Sequelize 中使用 GraphQL。我们首先安装了必要的依赖项,然后创建了一个包含 users
表的数据库。接下来,我们创建了一个 Sequelize 模型和一个 GraphQL Schema,并将它们添加到 Express.js 应用程序中。最后,我们测试了应用程序,并成功地从数据库中检索和创建数据。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6778a8aac1c5215e3cc7dfb5