node.js - 如何在 GraphQL 模式中使用“十进制”作为字段类型?
问题描述
我想Decimal
在我的 GraphGL 模式中用作纬度和经度字段的类型。但是 GraphQL 只提供Float
和Int
。有没有解决这个问题的包?
解决方案
我查看了这个模块的源代码可以想出这个:
/// 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 代码中。
推荐阅读
- r - 切割数据集以制作新因子变量的方法
- python - BeautifulSoup findAll 没有在网页上返回值
- json-api - JAGQL - 为什么我需要一个 id 来进行 post call?
- user-interface - Unity,原始图像上的菲涅尔着色器
- django - Visual Studio Code 下的 Django 应用单元测试问题
- css - CSS Grid 适合内容并换行
- c# - System.TimeSpan.Parse 对 HH:MM:SS 的解析不正确,其中 HH >= 24
- python - 如何将正确的转义序列字符添加到字符串中
- ruby-on-rails - ruby on rails 后台应用程序在用户动态定义的时间自动运行作业?
- laravel - Laravel - 路线有一个正斜杠