如何在GraphQL模式中使用“十进制”作为字段类型?

时间:2019-07-18 08:18:01

标签: node.js express graphql apollo-server

我想在我的GraphGL模式中将Decimal用作纬度和经度字段的类型。但是GraphQL仅提供FloatInt。 是否有解决方案?

1 个答案:

答案 0 :(得分:0)

我查看了 this module 的源代码可以想出这个:




///  I M P O R T

import Big from "big.js";
import { GraphQLScalarType, Kind } from "graphql";



///  E X P O R T

export default new GraphQLScalarType({
  name: "Decimal",
  description: "The `Decimal` scalar type to represent currency values",

  serialize(value) {
    return new Big(value);
  },

  parseLiteral(ast) {
    if (ast.kind !== Kind.STRING) {
      // @ts-ignore | TS2339
      throw new TypeError(`${String(ast.value)} is not a valid decimal value.`);
    }

    return Big(ast.value);
  },

  parseValue(value) {
    return Big(value);
  }
});

然后,我将引用添加到我的解析器,这样我就可以将 Decimal 添加到我的 SDL 代码中。