如何从我的架构将解析器绑定到Task#tags

时间:2019-07-01 00:33:04

标签: graphql iterable resolver

问题

我正在努力知道在哪里为字符串列表放置定制的GraphQL字段解析器?

返回列表的tagsHardCoded(...)函数应满足Task#tags的架构,但我必须将其放在错误的位置。

有没有人知道在这个最小的应用程序下GraphQL期望在哪里找到解析器?

代码

这显示了试图进行绑定的模式和rootValue。

const schema = buildSchema(`
  type Query {
    alltasks: [Task!]
  }
  type Task {
    id: String!
    title: String!
    tags: [String!]
  }
`)

const rootValue = {
  alltasks: () => _.get(db, 'tasks'),
  Task: {
    tags: tagsHardCoded
  }
}

完整的参考代码可见https://gist.github.com/cefn/5d96f772ea40b841d3f6f3261f92f002

预期胜于实际

我希望每个任务都报告一个标签字段,其中包含我的tagsHardCoded(...)解析器提供的硬编码值。

但是,考虑到我放置解析器的位置,如果我尝试查询...

{
 alltasks {
  id
  content
  tags
 }  
}

... GraphQL报告此错误:Expected Iterable, but did not find one for field Task.tags

背景

我有一个简单的可运行的GraphQL应用程序,使用默认的解析器(假定可以在parent [fieldName]中找到fieldName的解析器)成功地执行了Task类型。

此应用程序从伪数据库映射任务,并针对GraphiQL的查询呈现其简单的标量字段。

但是,我希望标签字段得到不同的解决。目前,我根本无法使用我的解析器,这已经使实验陷入僵局。

我尝试过的东西

我一直在尝试连接始终返回相同标签列表的解析器,以简化测试用例。

我正在使用的添加解析器绑定的方法似乎是在线资源中描述的方法。我希望在此阶段仅使用GraphQL约定添加一个解析器,并希望避免不必要地进入更复杂的生态系统。

要实现这一目标,似乎有多种不同的约定,在线指南的不同作者都将其纳入...

  • Apollo,不仅是GraphQL
  • ES2015类
  • GraphQL模式对象
  • buildSchema生成Schema对象的隐式树

通常很难判断示例中描述的源应该放置在哪里(它们通常表示为片段,甚至没有描述它们是Javascript还是GraphQL查询语言或JSON结果,它们是从哪个项目文件中提取而来,您可以猜测它们是什么,以及它们的放置位置。

0 个答案:

没有答案
相关问题