1. 简介
Graphile-build是一个基于Graphql的Javascript库,主要用于构建高效、灵活的GraphQL服务。它已经深受前端开发者和GraphQL爱好者的喜爱,同时也得到了Github等多个社区的积极推荐。Graphile-build提供了一系列的插件来帮助开发者将数据库中的数据转化成GraphQL中的数据类型。这一系列插件提供了GraphQL Schema 自动构建、简单的字段重复以及定制处理所有远程请求等等功能,让开发者无需复杂地手动编写GraphQL Schema。本文将向大家介绍graphile-build的基本概念,使用方法以及一些示例代码,希望能够帮助读者更容易地理解和使用graphile-build。
2. 安装
Graphile-build依赖于Node.js和PostgreSQL,因此在使用之前需要确保Node.js与PostgreSQL环境已经安装好了。接下来,通过npm安装graphile-build:
npm install graphile-build
当然,如果您想使用一些其他的插件,您也可以在安装时指定您需要的插件名称:
npm install --save graphile-build-pg npm install --save graphile-build-schema-extensions npm install --save graphile-build-websocket
3. 基本概念
Schema
Schema即GraphQL对象类型的集合,其中包含了所有GraphQL对象类型、集合类型以及相应的字段、查询与变更。它可以被描述为一个数据源的公开API,用于描述数据的结构、类型以及字段之间的关系。
Plugin
Plugin是为Schema添加某些功能的小型软件包,它们可以自定义我们的Schema,以及某些特定功能的插件。插件实际上就是对GraphQL schema的"补丁",它们会改变Schema中的字段、类型、扩展器和指令等等,从而实现特定的目的。
builder
Builder是用于描述Schema和Plugin的一种模式。它被认为是一种更加高效、灵活的开发方式,它不仅可以在运行时快速构建Schema,并且可以轻松地扩展添加Plugin,同时也更加容易维护。
4. 使用方法
构建基本Schema
在使用graphile-build之前,我们需要先通过GraphQL objectType方法构建Schema中的字段、类型等。在这里我们举一个简单的例子,我们将构建一个包含name与age两个字段的GraphQL Schema。代码如下:
-- -------------------- ---- ------- ----- - -------- ----------- - - ------------------- ----- - ------------------ -------------- ---------- - - ------------------------ ----- ---------- - --- ------------------- ----- --------- ------- - ----- - ----- ------------- -- ---- - ----- ---------- -- -- --- ----- ------ - ------------- ------ --- ------------------- ----- -------- ------- - ------- - ----- ----------- -------- -- -- - ------ - ----- ------ ---- -- -- -- -- -- --- --- --------------- -- ------ - -------- - ----------------- -- - ---------------------------------- ----- ---- ---
在上面的代码中,我们定义了一个personType,并在最终的Schema中添加一个person Query,最终输出结果如下:
{ "data": { "person": { "name": "Tom", "age": 20 } } }
增加Plugin
graphile-build拥有许多有用的Plugin,您可以方便地选择您需要的Plugin来增强您的Schema。这里我们选用graphile-build-pg插件作为例子,让我们来看一下如何将这个插件添加到我们的使用中,以便在Schema中使用PostgreSQL数据库。
首先,我们需要在安装graphile-build-pg的同时,将pg包同时进行安装:
npm i pg
然后,我们可以将graphile-build-pg添加到我们的Schema中:
-- -------------------- ---- ------- ----- - -------- ----------- - - ------------------- ----- - ------------------ -------------- ---------- - - ------------------------ ----- - -------- -------- - - ----------------------------- ----- ---------- - --- ------------------- ----- --------- ------- - ----- - ----- ------------- -- ---- - ----- ---------- -- -- --- ----- ------ - ------------- -------- ----------- ------ --- ------------------- ----- -------- ------- - -------- - ----- ------------- ----- --------------- ----- -------- ------ ----- - ---- - - ----- ------------------------------ - ---- ---------- ------ ----- -- -- -- --- --- ----- - ---- - - -------------- ----- ---- - --- ------ ----------------- ----------------------------------------------------- --- ------------------------------ -- - -------- ------- -- ------- - -------- - --- ----- - -------- -- --------------- -- - ---------------------------------- ----- ---- ------------- -- - ----------- --- ---
在上面的例子中,我们首先引入了graphile-build-pg插件,然后在buildSchema过程中将它加入到plugins中。接下来,我们在Query中添加了一个persons选项,它会从我们的PostgreSQL数据库中查询出数据,最后通过GraphQL返回。最后,我们将数据库连接信息利用context参数传入到Schema中,在graphql方法中调用即可。
5. 总结
本文向大家介绍了npm包graphile-build的使用方法,包括构建Schema、增加Plugin等操作,并且提供了详细的代码示例。Graphile-build的出现加速了GraphQL的普及,进一步提高了工程师的开发效率。如果您已经习惯了使用GraphQL,并且在开发中碰到了较为复杂的业务场景,相信graphile-build能够为您的开发工作提供更多的便利。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/195931