Node.js 如何在React/Node应用程序中使用GraphQl查询Java数据类型(长、短、BigDecimal)

Node.js 如何在React/Node应用程序中使用GraphQl查询Java数据类型(长、短、BigDecimal),node.js,reactjs,graphql,apollo,Node.js,Reactjs,Graphql,Apollo,我试图获取适合Java的数据值类型,如long、short、BigDecimal、double,但GraphQl无法识别它们,它只理解String、Int、Float、Boolean和ID。 如何使这些查询与这些数据值类型一起工作 const { gql } = require("apollo-server"); const typeDefs = gql` type SignalValue { tickId: Int instId: Float

我试图获取适合Java的数据值类型,如long、short、BigDecimal、double,但GraphQl无法识别它们,它只理解String、Int、Float、Boolean和ID。 如何使这些查询与这些数据值类型一起工作

const { gql } = require("apollo-server");

const typeDefs = gql`

  type SignalValue {
    tickId: Int
    instId: Float
    tradingDay: String
    sigId: Int
    BigDecimal: Float
  }
//Accepted data values type


  type TotalPnl {
    floatingPnl: short
    updateTimestamp: long
    totalFees: BigDecimal
    winRatio: double
  }`
//Refused data values type
这是终端错误

/Users/yohav/Desktop/monitorgui2/Apollo-NodeJS-Gateway/node_modules/graphql/validation/validate.js:108
    throw new Error(errors.map(function (error) {
    ^

Error: Unknown type "short".
    at assertValidSDL (/Users/yohav/Desktop/monitorgui2/Apollo-NodeJS-Gateway/node_modules/graphql/validation/validate.js:108:11)
    at Object.buildASTSchema (/Users/yohav/Desktop/monitorgui2/Apollo-NodeJS-Gateway/node_modules/graphql/utilities/buildASTSchema.js:71:34)
    at Object.buildSchemaFromTypeDefinitions (/Users/yohav/Desktop/monitorgui2/Apollo-NodeJS-Gateway/node_modules/graphql-tools/dist/generate/buildSchemaFromTypeDefinitions.js:25:28)
    at Object.makeExecutableSchema (/Users/yohav/Desktop/monitorgui2/Apollo-NodeJS-Gateway/node_modules/graphql-tools/dist/makeExecutableSchema.js:26:29)
    at ApolloServer.initSchema (/Users/yohav/Desktop/monitorgui2/Apollo-NodeJS-Gateway/node_modules/apollo-server-core/dist/ApolloServer.js:272:49)
    at new ApolloServerBase (/Users/yohav/Desktop/monitorgui2/Apollo-NodeJS-Gateway/node_modules/apollo-server-core/dist/ApolloServer.js:199:30)
    at new ApolloServer (/Users/yohav/Desktop/monitorgui2/Apollo-NodeJS-Gateway/node_modules/apollo-server-express/dist/ApolloServer.js:59:9)
    at new ApolloServer (/Users/yohav/Desktop/monitorgui2/Apollo-NodeJS-Gateway/node_modules/apollo-server/dist/index.js:24:9)
    at Object.<anonymous> (/Users/yohav/Desktop/monitorgui2/Apollo-NodeJS-Gateway/index.js:9:16)

/Users/yohav/Desktop/monitorgui2/Apollo NodeJS Gateway/node_modules/graphql/validation/validate.js:108
抛出新错误(errors.map)(函数(Error){
^
错误:未知类型“short”。
在assertValidSDL(/Users/yohav/Desktop/monitorgui2/Apollo NodeJS Gateway/node_modules/graphql/validation/validate.js:108:11)
在Object.buildASTSchema(/Users/yohav/Desktop/monitorgui2/Apollo NodeJS Gateway/node_modules/graphql/utilities/buildASTSchema.js:71:34)
在Object.buildSchemaFromTypeDefinitions(/Users/yohav/Desktop/monitorgui2/Apollo NodeJS Gateway/node_modules/graphql tools/dist/generate/buildSchemaFromTypeDefinitions.js:25:28)
在Object.makeExecutableSchema(/Users/yohav/Desktop/monitorgui2/Apollo NodeJS Gateway/node_modules/graphql tools/dist/makeExecutableSchema.js:26:29)
在ApolloServer.initSchema(/Users/yohav/Desktop/monitorgui2/Apollo NodeJS Gateway/node_modules/Apollo server core/dist/ApolloServer.js:272:49)
在新的阿波罗服务器库(/Users/yohav/Desktop/monitorgui2/Apollo NodeJS Gateway/node_modules/Apollo server core/dist/ApolloServer.js:199:30)
在新的阿波罗服务器上(/Users/yohav/Desktop/monitorgui2/Apollo NodeJS Gateway/node_modules/Apollo server express/dist/ApolloServer.js:59:9)
在新的阿波罗服务器上(/Users/yohav/Desktop/monitorgui2/Apollo NodeJS Gateway/node_modules/Apollo server/dist/index.js:24:9)
at对象。(/Users/yohav/Desktop/monitorgui2/Apollo NodeJS Gateway/index.js:9:16)

GraphQL是一种强类型语言。这意味着必须首先在架构内定义类型,然后才能引用该类型(无论是在架构本身内还是在针对该架构执行的客户端查询内)。此规则的唯一例外是五个:Int、Float、String、Boolean和ID。架构中可以使用这五个以外的其他标量,但必须首先像其他类型一样定义它们

scalar BigInt
GraphQL无法知道像这样的自定义标量值在用作输入或输出时应该如何表现,因此我们还需要一种方法来定义这种行为。如果您使用的是Apollo Server,我们可以通过初始化
GraphQLScalarType
类的实例并定义
序列化
解析值
p来实现这一点类型的arseleral
方法。自定义标量可以通过解析器映射传递到架构,如图所示

如果您需要使用自定义标量,很可能它是一个可以导入的模块,因此您通常不必自己编写自定义标量