如何通过 graphql-tools 使用或解析枚举类型?

2023-12-26

我在任何地方都找不到graphql-tools记录人们应该如何使用enum馈送至的模式中的类型makeExecutableSchema。有人知道这是怎么做到的吗?

示例代码:

enum Color {
  RED
  GREEN
  BLUE
}

type Car {
  color: Color!
}

解析器的作用是什么Color看起来像?


你不会为Color。这是一个简单的、可运行的示例:

const bodyParser = require('body-parser');
const { graphqlExpress, graphiqlExpress } = require('graphql-server-express');
const { makeExecutableSchema } = require('graphql-tools');
const app = require('express')();

const carsData = [
  {color: 'RED'},
  {color: 'GREEN'},
  {color: 'BLUE'},
];

const typeDefs = `
  enum Color {
    RED
    GREEN
    BLUE
  }
  type Car {
    color: Color!
  }
  type Query {
    cars: [Car!]!
  }
`;

const resolvers = {
  Query: {
    cars: () => carsData,
  }
};

const schema = makeExecutableSchema({
  typeDefs,
  resolvers,
});

app.use('/graphql', bodyParser.json(), graphqlExpress({ schema }));
app.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql' }));

app.listen(3000);

Run a cars query ({cars {color}}) in GraphiQL http://localhost:3000/graphiql您将在我们的数据中看到每辆车返回的颜色。现在,更改其中的一个值data(不是枚举定义)为您未定义的颜色,例如PINK。再次运行查询,您将看到类似以下的错误消息:

"Expected a value of type \"Color\" but received: PINK"

这也适用于解析器,因此如果我通过为 Car 添加解析器来覆盖数据,如下所示:

Car: {
  color: () => 'RED'
}

该查询将显示所有颜色为红色的汽车。如果将解析器返回的值更改为BLACK,查询将再次出错。

枚举只是强制特定字段解析为的任何值都在您定义的值集中的一种方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 graphql-tools 使用或解析枚举类型? 的相关文章

随机推荐

  • “Web”客户端类型不允许自定义方案 URI - Google 与 Firebase

    我正在尝试使用 firebase 在我的 iOS 应用程序中实现 google 登录 我遵循这个教程 https firebase google com docs auth ios google signin https firebase
  • 在 FileAppender 中使用 Logback 标记时出错

    我已经开始探索我们的应用程序的 Logback 选项 要求之一是为具有特定 标记 的日志条目创建单独的日志文件 下面是我正在使用的 logback xml 文件和我收到的错误 logback 网站上的示例显示了 SMTPAppender 的
  • 需要帮助实施 Facebook 积分

    我读过一些关于开始实施 Facebook 积分的其他帖子 并且从 github 下载了示例代码 https github com facebook credits api sample https github com facebook c
  • MS Access:自定义纸张尺寸

    我正在构建一个 MS Access 2010 应用程序 我将从此应用程序打印条形码标签 还有各种其他报告和表格也将使用标准打印机设置进行打印 但是对于条形码 我需要将其打印到特定打印机 并且必须将其设置为使用特殊的页面尺寸 在我的搜索中我有
  • 为什么“WriteOnlyWorksheet”对象没有属性“cell”?

    import openpyxl wb openpyxl Workbook multiplication xlsx wb create sheet sheet wb get active sheet sheet cell column 6 r
  • 在线性布局中以相等间距水平对齐按钮

    我正在尝试制作一个线性布局 其中 5 个按钮水平放置 间距相等 但所有按钮的大小 宽度 应仅为 40dp 我试过这个
  • 如何使用 SVN 热复制恢复存储库?

    好的 我使用svn的hotcopy进行增量备份 现在如何测试hotcopy是否正常工作 我在这里搜索了有关热复制的帖子 他们中的大多数似乎只是鼓励使用 svn hotcopy 但没有谈论如何使用 hotcopy 进行恢复 关于如何使用我制作
  • 如何向 UIImage 或 UIImageView 或 UIView 添加外部发光

    我想添加褪色的阴影 外发光到UIImage UIImageView UIView但我知道没有Core Graphics根本不 Edit 请帮忙 采用 Cirrostratus 概述的方法 保留其缓存副本 然后在拖动时应用变换来更改图像的大小
  • 使用反汇编器的.NET 中的对象布局结构

    我有兴趣查看对象布局结构 并尝试在 Visual Studio 中使用反汇编 以下是我的代码 class myclass public int m a myclass myc new myclass myc m a 23 I am sett
  • 如何在 ionic 2 中按月对项目进行分组?

    我有一个数据集合 我想按月分组以形成日历列表视图 并带有分隔符 如所附图像 如何在 ionic 2 中做到这一点 data id 75 title Oudergesprekken startDate 18 01 2017 id 76 tit
  • Android:构造时未能setLocale(),关闭数据库

    我正在尝试创建一个包含 12 个不同表的数据库 该数据库直到今天都运行良好 现在 每次我在卸载并重新安装它 或只是清除应用程序数据 后第一次启动我的应用程序时 我都会收到标题中看到的错误消息 但是 在收到此错误后第二次启动应用程序时 它工作
  • 如何使用 Linq 和 IN 子句

    这是我的代码 if catid 0 posts posts Where x gt x catid IN 1 8 2 109 23 The in在此代码中显示为语法错误 有没有办法来解决这个问题 您也必须使用另一个列表进行比较 List
  • 如何在 Java 编译时断言某些内容?

    有时数据结构应该具有某些无法用 Java 直接描述的关系 但在编辑代码时尽早检查这些关系是有好处的 典型的例子是数组足够大或者不同模块中的枚举有相应的成员 BOOST 在 C 中提供了一个很好的 静态断言 工具 甚至在断言失败时提供了一半不
  • 从 svn 客户端签出重新创建 subversion 存储库

    我的第一个问题在这里 Subversion 存储库已删除 但存在从该存储库进行的签出 我将如何从结帐重建存储库 您可以将该签出导出到新位置 然后将其全部添加到新存储库 但你无法恢复历史
  • Pyqt 鼠标悬停在 QPushButton 上

    我想检测鼠标悬停在QPushButton 为此 我在按钮上安装了一个事件过滤器 但是 那MouseMove当鼠标位于按钮上方时 事件不会准确触发 当我单击与前一个位置不同的位置上的按钮时 似乎有时会触发它 简而言之 我将鼠标移到按钮上 没有
  • 您需要 ref 或 out 参数吗?

    我将类的实例传递给方法 该方法将修改该实例 由于这是我要传递的类 我是否需要使用 out 或 ref 关键字 这就是我想做的 public void Blah Blah b Dao GetBlah 23 SomeService Modify
  • Airflow 中最新的唯一运算符和追赶者之间的区别

    正如标题所暗示的 希望了解 dag 定义中的 catchup False 和最新的 only 运算符之间的区别 https airflow apache org docs stable scheduler html https airflo
  • 这三种清除文本框的方法有什么区别?

    我对以下三种清除文本框内容的方法有点困惑 我正在使用 WPF 并发现所有功能都在工作 但我无法找到差异 有人可以用一些例子向我解释一下吗 txtUserName Clear txtUserName Text string Empty txt
  • 使用 setTimeout(fn, 0) 将代码执行推迟到当前调用堆栈之后可靠吗?

    我有一个被调用次数未知的函数 我需要知道该函数运行了多少次 所以我正在这样做 function var i 0 increment function if i 0 setTimeout function console log increm
  • 如何通过 graphql-tools 使用或解析枚举类型?

    我在任何地方都找不到graphql tools记录人们应该如何使用enum馈送至的模式中的类型makeExecutableSchema 有人知道这是怎么做到的吗 示例代码 enum Color RED GREEN BLUE type Car