首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取GraphQL模式指令中的字段类型(Node.js,graphql-tools)

在Node.js中使用graphql-tools库来获取GraphQL模式指令中的字段类型,可以通过以下步骤实现:

  1. 首先,确保已经安装了Node.js和graphql-tools库。可以使用以下命令进行安装:
代码语言:txt
复制
npm install graphql-tools
  1. 在Node.js项目中引入所需的依赖:
代码语言:txt
复制
const { makeExecutableSchema } = require('graphql-tools');
const { parse } = require('graphql');
  1. 定义GraphQL模式指令的字符串:
代码语言:txt
复制
const typeDefs = `
  type Query {
    user(id: ID!): User @cacheControl(maxAge: 3600)
  }

  type User {
    id: ID!
    name: String!
    email: String!
  }
`;

在上述示例中,@cacheControl(maxAge: 3600)是一个GraphQL模式指令,用于设置缓存控制。

  1. 创建可执行的GraphQL模式:
代码语言:txt
复制
const schema = makeExecutableSchema({
  typeDefs: parse(typeDefs),
});
  1. 获取字段类型:
代码语言:txt
复制
const field = schema.getTypeMap().Query.getFields().user;
const fieldType = field.type.toString();

在上述示例中,我们获取了Query类型中的user字段,并通过type.toString()方法获取了字段的类型。

  1. 打印字段类型:
代码语言:txt
复制
console.log(fieldType);

以上步骤将打印出User,表示user字段的类型是User

这是一个简单的示例,演示了如何在Node.js中使用graphql-tools库获取GraphQL模式指令中的字段类型。对于更复杂的模式和指令,可以根据具体情况进行相应的处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【译】如何Node.js 创建安全 GraphQL API

    原文地址:How to Create a Secure Node.js GraphQL API 作者:Marcos 本文目的是提供一份快速指南 -- 《如何快速在如何Node.js 创建安全...如前面所讲述那样,查询 (query) 是客户端从 API 读取和操作数据方式。你可以传递一个对象类型,并且定义所希望返回字段类型。...GraphQL 在一些场景中非常适合。REST 是一种架构设计模式,在很多场景也得到了验证。如今,有大量文章试图证明为什么一个比另一个好,或者你应该使用 REST 而不是 GraphQL。...这篇文章还展示了如何使用 Node.js 和 Express 来开发 REST API 框架,你可以在这两种方法找出一些差异。...本文所有示例可以在这个链接获得:https://github.com/makinhs/node-graphql-tutorial 我们将会处理两种类型资源(两个集合): Users:用来展示如何进行基本

    2.5K20

    GraphQL 初体验,Node.js 构建 GraphQL API 指南

    Addresses 还定义了他自己几个字段。(顺便说一下,GraphQL 模式不仅有对象,字段和标量类型,还有更多,你也可以合并接口,联合和参数以构建更复杂模型,但本文中不会介绍)。...city country } } } ` 该 query 字段属于一种特殊保留类型,称为 Query,这里指定了获取对象主要入口点。...另一部分涉及实际获取数据,这是通过使用解析器完成,解析器是一个返回字段基础值函数。 让我们看一下如何Node.js 实现解析器。...我们目的是围绕着解析器如何模式一起操作来巩固概念,所以我们不会围绕着如何设置数据存储来做太详细介绍。...GraphQL 类型功能会给查询过程提供严格校验,你甚至可以尝试请求不存在字段

    8.3K40

    GraphQL 基础实践

    GraphQL 就是为了解决这些问题而来,向服务端发送一次描述信息,告知客户端所需所有数据,数据控制甚至可以精细到字段,达到一次请求获取所有所需数据目的。...Schema 前面我们提到,GraphQL 拥有一个类型系统,那么每个字段类型是怎么约定呢?答案就在本小节。在 GraphQL 类型定义以及查询本身都是通过 Schema 去定义。...中一个对象可以包含各种 key,在 GraphQL ,type 里面同样可以包含各种字段(field),而且字段类型不仅仅可以是标量类型,还可以是 Schema 定义其他 type。...内置了两款逻辑指令指令跟在字段名后使用。...调用 graphql-tools makeEcecutableSchema 进行组合好,放在 options 里面稍后使用。

    12.8K20

    怎样使用 apollo-link-state 管理本地数据

    GraphQL 最大一个优势在于,当给 GraphQL 语句中字段加上合适 GraphQL 指令后,单条 query 就可以从多个数据源获取数据,无论本地还是远端。让我们来看看具体方法。...这便是 Resolver 发挥作用地方了。如果你以前在服务器端使用过 graphql-tools,那么你会发现两者 resolver 类型签名是一样。 ....1.0 版本前路线图 尽管 apollo-link-state 开发已足够稳定,可以投入实际应用开发了,但仍有一些特性我们希望能尽快实现: 客户端数据模式:当前,我们还不支持对客户端数据模式结构类型校验...,这是因为,如果要将用于运行时构建和校验数据模式 graphql-js 模块放入依赖,会显著增大网站资源文件大小。...为了避免这点,我们希望能将数据模式构建转移到项目的构建阶段,从而达到对类型校验支持,并也可以用到 GraphiQL 各种很酷功能。

    2.3K100

    GraphQL-BFF:微服务背景下前后端数据交互方案

    一、GraphQL 模式出现必然性 面向前端页面的数据聚合层,其接口很容易在迭代过程,变得愈加复杂;最终发展成一个超级接口。...站在这个层面上看,GraphQL 模式出现,有一定必然性。 二、GraphQL 语言设计必然性 作为一个查询相关 DSL,GraphQL 语言设计,也不是随意。...它也不管 Resolver 函数返回数据类型对不对,获取到什么,就是什么。一个字段,不必先定义好,才能被前端消费,它可以动态计算出来。 在某些场景下,动态类型 GraphQL 有一定便利性。...七、我们 GraphQL-BFF 实践模式 在掌握上述关于 GraphQL 纲领知识后,我们来看一下在实践GraphQL-BFF 一种实际做法。...很简单,添加一个 @mock 指令即可。 ? 如上所示,user 字段和 collections 字段 resolver 都进入了 mock 模式。 ?

    3.7K72

    干货 | 万字长文全面解析GraphQL,携程微服务背景下前后端数据交互方案

    一、GraphQL 模式出现必然性 面向前端页面的数据聚合层,其接口很容易在迭代过程,变得愈加复杂;最终发展成一个超级接口。...站在这个层面上看,GraphQL 模式出现,有一定必然性。 二、GraphQL 语言设计必然性 作为一个查询相关 DSL,GraphQL 语言设计,也不是随意。...它也不管 Resolver 函数返回数据类型对不对,获取到什么,就是什么。一个字段,不必先定义好,才能被前端消费,它可以动态计算出来。 在某些场景下,动态类型 GraphQL 有一定便利性。...七、我们 GraphQL-BFF 实践模式 在掌握上述关于 GraphQL 纲领知识后,我们来看一下在实践GraphQL-BFF 一种实际做法。...很简单,添加一个 @mock 指令即可。 ? 如上所示,user 字段和 collections 字段 resolver 都进入了 mock 模式。 ?

    3.6K21

    GraphQL-BFF:微服务背景下前后端数据交互方案

    一、GraphQL 模式出现必然性 面向前端页面的数据聚合层,其接口很容易在迭代过程,变得愈加复杂;最终发展成一个超级接口。...站在这个层面上看,GraphQL 模式出现,有一定必然性。 二、GraphQL 语言设计必然性 作为一个查询相关 DSL,GraphQL 语言设计,也不是随意。...它也不管 Resolver 函数返回数据类型对不对,获取到什么,就是什么。一个字段,不必先定义好,才能被前端消费,它可以动态计算出来。 在某些场景下,动态类型 GraphQL 有一定便利性。...七、我们 GraphQL-BFF 实践模式 在掌握上述关于 GraphQL 纲领知识后,我们来看一下在实践GraphQL-BFF 一种实际做法。...很简单,添加一个 @mock 指令即可。 ? 如上所示,user 字段和 collections 字段 resolver 都进入了 mock 模式。 ?

    1.6K20

    graphql+koa2 前端bff层

    graphql查询优势在于前端可以主动控制字段获取(只要这些字段是可以访问)。集成graphql有两种方式。...Query是graphql顶层类型,除开Query我们常用还有Mutation。...在解析器,他们数据来源可以是任何地方,有可能是数据库,也可能是其他接口。我们这里是做中间层转发。所以直接使用axios转发到后端了。那么类型定义参数就在这里获取使用。...,类标的类型是ExportItem,所以我们不需要再告诉查询是不是取列表,返回类型都是事先定义好,我们需要做是控制返回字段,只要ExportItem这个类型包含字段我们都可以定义取或者是不取,比如我们上面...graphql查询另外一个比较好地方在于指令指令加入会让bff层更加有做为(放在下一次讲)

    12810

    你不知道 GraphQL

    所以你不能声明一个自定义类型用这两个关键字 - 它们是GraphQL预留关键字。你可能会对Query下定义字段有个困扰,它们总是和实体类型名字一样 - 但这只是个习惯约定。...有了它,我们服务端就相当于有了自动化API文档生成功能,这就意味着我们不再需要Swagger[12]啦~ Tip 文档每个类型字段解释来自于schema注释(以#为首行)。...管理自定义Scalar类型 你可能注意到了我到现在为止都没有获取tweet.date数据,那是因为我在schema定义了自定义scalar类型: type Tweet { # ......把resolver定位为一个纯函数,是GraphQL设计者们另一个明智之举。 查询引擎集成化测试 那么,如何来测试数据依赖,类型和聚合逻辑呢?...注意,文件最后导出是一个数组而非字符串。后面你就会知道是为啥了。 现在,在User schema声明文件,我们如何添加字段到已经存在query类型

    3.3K20

    用ServBay快速构建下一代GraphQL应用

    主要功能包括声明式数据获取:使用 GraphQL,客户端可以在查询精确指定所需数据,包括字段和关系。这消除了传统 REST API 经常出现数据过度获取获取不足问题。...高效类型系统: GraphQL 拥有强大类型系统,可以在 API 定义数据结构和关系。高效数据加载功能: GraphQL 使客户端能够在单个请求检索多个资源。...如何构建GraphQL微服务在构建GraphQL微服务时,我们将遵循以下步骤:第1步:使用ServBay设置环境不同于传统手动安装Node.js,ServBay提供了预配置环境,包括各个版本Node.js...模式GraphQL模式是你数据和操作(查询和变更)类型系统描述。...然后,无论底层基础设施如何,这些映像都可以作为独立组件在隔离容器环境执行,并配备所需计算资源。

    17100

    一种不错 BFF Microservice GraphQLREST API 层开发方式

    还添加了基于响应性扩展示例,以演示如何将其用于构建微服务 API 边缘服务(edge-service)、前端后端(BFF)或将其用作构建任何类型微服务基础。...GraphQL mock resolvers (可选) - graphql-tools 基于 GraphQL 客户端包装 API - graphql-request REST APIs - 使用 Inversify...API 使用熔断模式示例 (/hystrix) scraper - 如何使用 scrape-it 从网站上抓取数据示例 (/scraper) 使用 swagger UI 以获得示例 API 完整列表...当前添加了一个使用 @date 指令示例(如 graphql-tools 文档中所述) Query ({ today(format: "mmm-dd-yy") }) - 这里格式基于@date scheme...此处区别在于,我们使用 @auth 指令根据角色来处理身份验证,而不是对解析程序实现进行硬编码。这是更清蒸方法,并且与解析器分离。

    2.3K10

    如何从jdbc获取数据库建表语句信息(表字段名称表字段类型字段注释信息表字段长度等等)

    * 如何从jdbc获取数据库建表语句信息(表字段名称/表字段类型/表字段注释信息/表字段长度等等) * 1,表字段名称 * 2,表字段类型 * 3,表字段注释信息 这里介绍3种方式,如下:...第二种方式:直接从jdbc数据库连接Connection实例获取 三种方式获取数据有一些区别 第一种方式不能获取信息比较丰富,但是唯一不能获取是表字段备注信息,其他信息基本都有了 第二种方式可以获取完整建表语句...,但是不太好用,需要自己解析表字段,如果自己可以解析的话,建议使用 第三种方式能够获取到表字段备注信息,但是获取不到表字段对应java类型 do not talk,show me code. package...jdbc获取数据库建表语句信息(表字段名称/表字段类型/表字段注释信息/表字段长度等等) * 1,表字段名称 * 2,表字段类型 * 3,表字段注释信息 */ @Slf4j public class...create table user_pop_info how2ObtainFieldInfoFromJdbc.method2(); // 第二种方式:直接从jdbc数据库连接Connection实例获取

    4.7K10

    混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用

    前言 恰逢最近需要编写一个简单后端 Node.js 应用,由于是全新小应用,没有历史包袱 ,所以趁着这次机会换了一种全新开发模式: 语言使用 TypeScript,不仅仅是强类型那么简单,它还提供很多高级语法糖...因后端 Java 开发服务模式已经非常成熟,前端在 Node.js 开发模式基本上是依照 Java 那套开发模子来,尤其是 DI(依赖注入)设计模式编程思想。...两种操作模式 这里简单说明一下,ORM 架构模式,最流行实现模式有两种:Active Record 和 Data Mapper。...for a Node.js API:初学者教程,从实践感受面向 Service 架构 Bulletproof node.js project architecture: 如何打造一个坚固 Node.js...@FieldResovler:对 @Resolver(of => Recipe) 返回对象添加一个字段处理 方法参数相关 Decorator: @Root:获取当前查询对象 @Ctx:获取当前上下文

    3.3K20

    如何优雅地扩展GraphQL系统能力

    在真实业务场景,除了获取基础数据外,往往还会有一些对数据进行加工转换和编排控制需求,例如对数值字段取精或者转换成展示文案、对列表字段进行排序过滤去重、根据条件判断是否请求查询某些字段、将一个字段解析结果作为另外一个字段入参等...INPUT_FIELD_DEFINITION # 输入字段定义 GraphQL 规范并不会限制指令只能定义在可执行位或者类型系统位,但是为了明确指令是用在查询上、还是对于类型系统生效,往往只将指令生效位置限定在其中一种...GraphQL Calculator 参考了常见编程概念对指令进行定义: 字段加工:通过表达式对结果字段进行加工转换; 数组处理:对结果数组字段进行过滤、排序、去重; 参数转换:对请求参数进行转换...GraphQL Java 库提供了基于访问者模式实现QueryVisitor ,可在其方法获取到查询字段、内联片段和片段定义上下文信息,便于实现自定义校验规则。...on FIELD 实现指令 GraphQL 执行引擎获取查询结果可分为 fetch 和 complete 两个阶段:fetch 阶段根据请求参数和上下文获取该节点原始数据,并分析该节点类型,递归获取其子孙节点原始数据

    1.3K20
    领券