GraphQL 是一种由 Facebook 开发的查询语言,它可以帮助前端开发者更高效地进行数据查询和获取。在 Hapi 中使用 GraphQL 可以让我们更加方便地查询后端数据,本文将介绍如何在 Hapi 中使用 GraphQL 进行数据查询。
安装 GraphQL
首先,我们需要安装 GraphQL。使用 npm 安装即可:
npm install graphql
创建 GraphQL Schema
接下来,我们需要创建一个 GraphQL Schema。Schema 是 GraphQL 中的一个重要概念,它描述了我们的数据结构和查询方式。在 Hapi 中,我们可以使用 graphql-tools
库来创建 Schema:
-- -------------------- ---- ------- ----- - -------------------- - - ------------------------- ----- -------- - - ---- ----- - ------ ------ - -- ----- --------- - - ------ - ------ -- -- ------ ------- - -- ----- ------ - ---------------------- --------- --------- ---
以上代码创建了一个简单的 Schema,其中包含了一个 Query
类型和一个 hello
字段。
集成到 Hapi 中
现在我们已经创建了一个 GraphQL Schema,接下来我们需要将它集成到 Hapi 中。
首先,我们需要安装 graphql-hapi
和 graphiql
两个库:
npm install graphql-hapi graphiql
然后在 Hapi 中注册 GraphQL 插件:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- - ------------ ------------ - - ------------------------ ----- - -------------------- - - ------------------------- ----- -------- - - ---- ----- - ------ ------ - -- ----- --------- - - ------ - ------ -- -- ------ ------- - -- ----- ------ - ---------------------- --------- --------- --- ----- ------ - --- -------------- ------------------- ----- ---- --- ----------------- - --------- ------------ -------- - ----- ----------- --------------- - ------ -- ------ - ----- ---- - - -- - --------- ------------- -------- - ----- ------------ ---------------- - ------------ ---------- - - - -- ----- -- - -- ----- - ----- ---- - ------------------ -- - -- ----- - ----- ---- - ------------------- ------- --- --------------------- --- ---
以上代码创建了一个 Hapi 服务器,并注册了 graphqlHapi
和 graphiqlHapi
两个插件。其中 graphqlHapi
插件用于处理 GraphQL 查询,graphiqlHapi
插件用于提供一个 GraphQL 的 Web 界面。
现在我们可以访问 http://localhost:3000/graphiql
来打开 GraphQL Web 界面,并进行查询。
查询数据
下面我们来看一个更加复杂的例子,如何查询一个数据库中的数据。
首先,我们需要安装 sequelize
和 pg
两个库:
npm install sequelize pg
然后我们创建一个 User
模型,用于表示一个用户:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- --------- - --- --------------------- ----------- ----------- - ----- ------------ -------- ---------- --- ----- ---- - ------------------------ - ----- - ----- ---------------- -- ---- - ----- ----------------- - --- -----------------
接下来我们需要修改 Schema,使其能够查询数据库中的数据:
-- -------------------- ---- ------- ----- -------- - - ---- ---- - --- --- ----- ------ ---- --- - ---- ----- - ------ ------ - -- ----- --------- - - ------ - ------ -- -- -------------- - --
以上代码修改了 Schema,添加了一个 User
类型和一个 users
字段。users
字段的解析器会查询数据库中的所有用户,并返回一个包含所有用户的数组。
最后我们需要将 Schema 集成到 Hapi 中:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- - ------------ ------------ - - ------------------------ ----- - -------------------- - - ------------------------- ----- --------- - --------------------- ----- --------- - --- --------------------- ----------- ----------- - ----- ------------ -------- ---------- --- ----- ---- - ------------------------ - ----- - ----- ---------------- -- ---- - ----- ----------------- - --- ----------------- ----- -------- - - ---- ---- - --- --- ----- ------ ---- --- - ---- ----- - ------ ------ - -- ----- --------- - - ------ - ------ -- -- -------------- - -- ----- ------ - ---------------------- --------- --------- --- ----- ------ - --- -------------- ------------------- ----- ---- --- ----------------- - --------- ------------ -------- - ----- ----------- --------------- - ------ -- ------ - ----- ---- - - -- - --------- ------------- -------- - ----- ------------ ---------------- - ------------ ---------- - - - -- ----- -- - -- ----- - ----- ---- - ------------------ -- - -- ----- - ----- ---- - ------------------- ------- --- --------------------- --- ---
现在我们可以访问 http://localhost:3000/graphiql
来打开 GraphQL Web 界面,然后进行查询。
例如,我们可以查询所有用户的姓名和年龄:
{ users { name age } }
以上代码会查询所有用户的姓名和年龄,并返回一个 JSON 数组。
总结
本文介绍了如何在 Hapi 中使用 GraphQL 进行数据查询,包括创建 Schema、集成到 Hapi 中和查询数据等方面。希望读者能够通过本文学习到如何使用 GraphQL 提高前端开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65bb3e4badd4f0e0ff3e9937