📅  最后修改于: 2023-12-03 15:01:03.970000             🧑  作者: Mango
在GraphQL中,Int类型被用来表示整数值。如果你需要表示非整数值,比如小数,你需要使用Float类型。如果你试图将非整数值传递给Int类型,你会遇到错误。
在JavaScript中,我们可以使用GraphQL.js来定义GraphQL schema。在定义一个Int类型字段时,你需要使用GraphQLInt方法来指定这个类型。
const {
graphql,
GraphQLSchema,
GraphQLObjectType,
GraphQLInt,
} = require('graphql');
const schema = new GraphQLSchema({
query: new GraphQLObjectType({
name: 'MyQuery',
fields: {
myInt: { type: GraphQLInt },
},
}),
});
const query = '{ myInt }';
const variables = { myInt: 2.5 };
graphql(schema, query, null, null, variables).then(result => {
console.log(result);
});
上面的代码片段定义了一个GraphQL schema,包含一个名为myInt的整数类型字段。然后我们使用GraphQL.js的graphql方法来执行这个查询,并将2.5作为变量传递进去。执行这段代码会抛出以下错误:
Variable "myInt" got invalid value 2.5; Expected type Int; Int cannot represent non-integer value: 2.5
这告诉我们,GraphQL Int类型不能表示非整数值。如果你需要表示小数值,你需要使用Float类型。
const {
graphql,
GraphQLSchema,
GraphQLObjectType,
GraphQLFloat,
} = require('graphql');
const schema = new GraphQLSchema({
query: new GraphQLObjectType({
name: 'MyQuery',
fields: {
myFloat: { type: GraphQLFloat },
},
}),
});
const query = '{ myFloat }';
const variables = { myFloat: 2.5 };
graphql(schema, query, null, null, variables).then(result => {
console.log(result);
});
上面的代码片段定义了一个GraphQL schema,包含一个名为myFloat的小数类型字段。然后我们使用GraphQL.js的graphql方法来执行这个查询,并将2.5作为变量传递进去。执行这段代码不会抛出任何错误,并返回以下结果:
{ myFloat: 2.5 }
总结一下,Int类型不能表示非整数值,如果你需要表示小数值,你需要使用Float类型。在JavaScript中,可以使用GraphQL.js来定义GraphQL schema,并执行查询。