gpt4 book ai didi

javascript - GraphQL Args 错误 : argument type must be Input Type but got: function GraphQLObjectType(config) {

转载 作者:IT老高 更新时间:2023-10-28 23:09:45 26 4
gpt4 key购买 nike

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

Error: Query.payment(data:) argument type must be Input Type but got: function GraphQLObjectType(config) { _classCallCheck(this, GraphQLObjectType);

当我从字符串更改原始参数时发生此错误

        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
});

最佳答案

如果你想使用 Object 作为参数,你应该使用 GraphQLInputObjectType 而不是 GraphQLObjectType。请记住,GraphQL 是基于强类型的,因此您不能使用通用 GraphQLObjectType 作为 arg 类型,然后动态查询 args。您必须在此输入对象中明确定义所有可能的字段(并选择其中哪些是强制性的,哪些不是)

尝试使用这种方法:

// your arg input object
var inputType = new GraphQLInputObjectType({
name: 'paymentInput',
fields: {
user: {
type: new GraphQLNonNull(GraphQLString)
},
order: {
type: GraphQLString
},
...another fields
}
});

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

关于javascript - GraphQL Args 错误 : argument type must be Input Type but got: function GraphQLObjectType(config) {,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39114417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com