Node.js GraphQL应为Iterable,但未为字段xxx.yyy找到Iterable

Node.js GraphQL应为Iterable,但未为字段xxx.yyy找到Iterable,node.js,graphql,graphql-js,Node.js,Graphql,Graphql Js,我目前正在使用NodeJS尝试GraphQL,我不知道为什么在以下查询中出现此错误: { library{ name, user { name email } } } 我不确定我的resolveLibrary的类型是否正确,因为在任何例子中,我都看到他们使用了新的GraphQL.graphqlist(),但在我的例子中,我真的想返回一个单用户对象,而不是一个用户数组 我的代码: const GraphQL = require('graph

我目前正在使用NodeJS尝试GraphQL,我不知道为什么在以下查询中出现此错误:

{
  library{
    name,
    user {
      name
      email
    }
  }
}
我不确定我的
resolveLibrary
类型是否正确,因为在任何例子中,我都看到他们使用了
新的GraphQL.graphqlist()
,但在我的例子中,我真的想返回一个单用户对象,而不是一个用户数组

我的代码:

const GraphQL = require('graphql');
const DB = require('../database/db');
const user = require('./user').type;

const library = new GraphQL.GraphQLObjectType({
    name: 'library',
    description: `This represents a user's library`,
    fields: () => {
        return {
            name: {
                type: GraphQL.GraphQLString,
                resolve(library) {
                    return library.name;
                }
            },
            user: {
                type: user,
                resolve(library) {
                    console.log(library.user);
                    return library.user
                }
            }
        }
    }
});

const resolveLibrary = {
    type: library,
    resolve(root) {
        return {
            name: 'My fancy library',
            user: {
                name: 'User name',
                email: {
                    email: 'test@123.de'
                }
           }
        }
    }
}

module.exports = resolveLibrary;
错误:

Error: Expected Iterable, but did not find one for field library.user.

因此,我的
模式提供了一个
用户
字段,该字段返回正确的数据(调用console.log)。

我猜您的
用户
图形QLlist
的一个实例,这就是字段用户希望解析为iterable对象的原因。

我也遇到了这个问题。从解析器返回的内容似乎与模式中的返回类型不匹配

特别是对于错误消息
预期为Iterable,但没有为field library.user找到一个。
,您的架构预期为数组(Iterable),但您没有在解析器中返回数组

我在schema.js中有以下内容:

登录(电子邮件:String,密码:String):[SuccessfulLogin]

我改为:

login(电子邮件:String,密码:String):SuccessfulLogin


请注意“SuccessfulLogin”周围的方括号。由您决定是要更新解析器返回类型还是更新模式的期望值

我也有同样的问题。我使用的是find而不是filter。

在我的例子中,它与django graphene有关,我没有定义解析方法

类SomeNode(djangObjectType):
things=石墨烯列表(ThingNode)
def解决问题(自我、信息、**kwargs):
返回self.things.all()

我遇到了同样的问题,但我使用的是GraphQL和Go

解决方案: 我提到返回类型是一个列表(或者可以说是一个数组),但是我的解析器函数返回的是一个接口,而不是一个接口列表

在它之前=>

Type: graphql.NewList(graphqll.UniversalType)
后来我把它改成=>

Type: graphqll.UniversalType
graphqll.UniversalType:“graphqll”是我的用户定义包的名称,“UniversalType”是我创建的GraphQL对象。

graphql对象以前的结构是:

var GetAllEmpDet = &graphql.Field{
    Type: graphql.NewList(graphqll.UniversalType),
    Resolve: func(params graphql.ResolveParams) (interface{}, error) {
       ...
       ...
       // Your resolver code goes here, how you handle.
       ...
       return models.Universal, nil // models.Universal is struct and not list of struct so it gave that error.
    },
}
当我将此更改为:

var GetAllEmpDet = &graphql.Field{
    Type: graphqll.UniversalType,
    Resolve: func(params graphql.ResolveParams) (interface{}, error) {
       ...
       ...
       // Your resolver code goes here, how you handle.
       ...
       return models.Universal, nil // models.Universal is struct and not list of struct so it gave that error.
    },
}

听起来您导入的用户类型可能有问题。你能更新你的问题以包含
user.js
的代码吗?非常感谢,你是对的,我的user.js的导出是错误的…请在编辑中显示你的解决方案?嗨@Vineth,谢谢你的更新,我还有一件事要问,方括号是用来做什么的?看起来没问题them@Liang方括号表示您应该在JSON响应中期待一个iterable对象或数组。对迟来的回复表示歉意,谢谢,不用担心。我想我现在明白了,
[]
意味着它应该返回
数组
,没有,应该返回
对象
当,我把它换了个东西,忘了把它换回来。谢谢。我读到这篇文章时感到内疚。感谢您花时间发布此答案。