📜  graphql Int 不能表示非整数值 - Javascript (1)

📅  最后修改于: 2023-12-03 15:01:03.970000             🧑  作者: Mango

GraphQL Int 不能表示非整数值 - JavaScript

在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,并执行查询。