Gro*_*ler 12 javascript node.js graphql
在服务器start(node index.js)上,我的GraphQL NodeJS服务器出现以下错误:
错误:Query.payment(data :)参数类型必须是输入类型但得到:函数GraphQLObjectType(config){_ classCallCheck(this,GraphQLObjectType);
当我从字符串中更改原始args时发生此错误
args: {
data: { type: graphQL.GraphQLString }
},
Run Code Online (Sandbox Code Playgroud)
对象类型:
args: {
data: { type: graphQL.GraphQLObjectType }
},
Run Code Online (Sandbox Code Playgroud)
我需要一个对象类型,因为我需要发送几个字段作为参数.
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!';
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
我如何允许它接受一个对象?
前端(如果需要.但错误发生在我发送之前):
var userQuery = encodeURIComponent('{ payment ( data: { user : "test" } )}');
$.get('http://localhost:4000/graphql?query=' + userQuery, function (res) {
//stuff
});
Run Code Online (Sandbox Code Playgroud)
Lor*_*ave 22
如果你想使用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!';
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7989 次 |
| 最近记录: |