GraphQL Args错误:参数类型必须是输入类型但得到:函数GraphQLObjectType(config){

时间:2016-08-24 04:25:10

标签: javascript node.js graphql

在服务器启动时(node index.js)我的GraphQL NodeJS服务器出现以下错误:

  

错误:Query.payment(data :)参数类型必须是输入类型但得到:   function GraphQLObjectType(config){       _classCallCheck(this,GraphQLObjectType);

当我从字符串

更改原始args时发生此错误
        args: {
            data: { type: graphQL.GraphQLString }
        },

对象类型:

        args: {
            data: { type: graphQL.GraphQLObjectType }
        },

我需要一个对象类型,因为我需要将几个字段作为参数发送。

GraphQL服务器:

var Query = new graphQL.GraphQLObjectType({
    name: 'Query',
    fields: {
        payment: {
            type: graphQL.GraphQLString,
            args: {
                data: { type: graphQL.GraphQLObjectType }
            },
            resolve: function (_, args) {
                // There will be more data here, 
                // but ultimately I want to return a string
                return 'success!';
            }
        }
    }
});

如何让它接受一个物体?

前端(如果需要。但错误发生在我发送之前):

var userQuery = encodeURIComponent('{ payment ( data: { user : "test" } )}');

$.get('http://localhost:4000/graphql?query=' + userQuery, function (res) {
       //stuff
});

1 个答案:

答案 0 :(得分:22)

如果您想使用Object作为参数,则应使用<TextView ... android:text="@{collection.size() > 0 ? @plurals/plural_str(collection.size(), collection.size()) : @string/zero_str}"/> 而不是GraphQLInputObjectType。请记住,GraphQL是基于强类型的,因此您不允许使用通用GraphQLObjectType作为arg类型,然后动态查询args。您必须在此输入对象中明确定义所有可能的字段(并选择哪些字段是强制的,哪些不是强制字段)

尝试使用此方法:

GraphQLObjectType