问题
我正在努力知道在哪里为字符串列表放置定制的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约定添加一个解析器,并希望避免不必要地进入更复杂的生态系统。
要实现这一目标,似乎有多种不同的约定,在线指南的不同作者都将其纳入...
通常很难判断示例中描述的源应该放置在哪里(它们通常表示为片段,甚至没有描述它们是Javascript还是GraphQL查询语言或JSON结果,它们是从哪个项目文件中提取而来,您可以猜测它们是什么,以及它们的放置位置。