具有明确错误的GraphQL:Query.example字段类型必须是输出类型但得到:[object Object]

时间:2016-09-14 17:26:30

标签: node.js graphql

我试图用graphql运行快速服务器,我收到以下错误:

  

错误:Query.example字段类型必须是输出类型,但得到:[object Object]。

在路线中使用的express-graphql:

app.use('/graphql', graphqlHTTP(req => ({
 schema,
 pretty: true
})));

架构看起来像这样:

export default new GraphQLSchema({
 query: new GraphQLObjectType({
    name: 'Query',
    fields: queries
 })
});

查询只有一个从此处导入的查询:

import {
 GraphQLList,
 GraphQLID,
 GraphQLNonNull
} from 'graphql';

import exampleScheme from '../models/schemes/example';
import {example as exampleData}  from '../models/jsons'

export default {
 type: exampleScheme,
 resolve (root, params, options) {
     return exampleData;
 }
};

模式(exampleScheme)和数据(exampleScheme)正在处理另一个项目,所以我认为它们不是问题所在。

有什么想法吗?什么是'输出类型'意思?

1 个答案:

答案 0 :(得分:2)

如果

docker-compose.yml

是你的查询,然后你弄错了, 查询的字段,因此在您的示例中的查询应该如下所示:

@Test
public void test_inAppMsgEmptyResponse() {
    given().
            contentType("application/json").
    when().
            get("inapp/messages.json").
    then().assertThat().
            statusCode(HttpStatus.SC_OK).
            assertThat().
            body("pollInterval", equalTo(defaultPollInterval)).
            assertThat().
            body("notifications", hasSize(0));
}

无论如何,错误是'type'不是有效的GraphQLType。 然后查询将如下所示

export default {
 type: exampleScheme,
 resolve (root, params, options) {
     return exampleData;
 }
};

将导致:

export default {
 helloString: {
     type: GraphQLString,
     resolve (root, params, options) {
         return "Hello World!";
     }
 }
 ... <Next query>
};

如果含义是exampleScheme是其他对象, 请确保您使用以下方式创建它:

query {
   testString
}

希望它有所帮助! :)