在服务器启动时( node index.js
)我的GraphQL NodeJS服务器出现以下错误:
错误:Query.payment(data :)参数类型必须是输入类型但得到:函数GraphQLObjectType(config){_ classCallCheck(this,GraphQLObjectType);
当我从字符串中更改原始args时发生此错误
args: {
data: { type: graphQL.GraphQLString }
},
对象类型:
args: {
data: { type: graphQL.GraphQLObjectType }
},
我需要一个对象类型,因为我需要发送几个字段作为参数 .
GraphQL Server:
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!';
}
}
}
});
我如何允许它接受一个对象?
Frontend (如果需要 . 但是在我发送之前错误发生了):
var userQuery = encodeURIComponent('{ payment ( data: { user : "test" } )}');
$.get('http://localhost:4000/graphql?query=' + userQuery, function (res) {
//stuff
});
1 回答
如果要使用Object作为参数,则应使用
GraphQLInputObjectType
而不是GraphQLObjectType
. 请记住,GraphQL是基于强类型的,因此不允许使用泛型GraphQLObjectType
作为arg类型,然后动态查询args . 您必须在此输入对象中显式定义所有可能的字段(并选择哪些字段是强制的,哪些不是)尝试使用这种方法: