gpt4 book ai didi

javascript - 如何使用 GraphQL 处理 long Int?

转载 作者:行者123 更新时间:2023-12-03 12:14:21 25 4
gpt4 key购买 nike

如您所知,GraphQL 没有像 long int 这样的数据类型。因此,每当数字很大时,例如 10000000000 ,它会引发如下错误:Int cannot represent non 32-bit signed integer value: 1000000000000为此,我知道两种解决方案:

  • 使用标量。

  • import { GraphQLScalarType } from 'graphql';
    import { makeExecutableSchema } from '@graphql-tools/schema';

    const myCustomScalarType = new GraphQLScalarType({
    name: 'MyCustomScalar',
    description: 'Description of my custom scalar type',
    serialize(value) {
    let result;
    return result;
    },
    parseValue(value) {
    let result;
    return result;
    },
    parseLiteral(ast) {
    switch (ast.kind) {
    }
    }
    });

    const schemaString = `

    scalar MyCustomScalar

    type Foo {
    aField: MyCustomScalar
    }

    type Query {
    foo: Foo
    }

    `;

    const resolverFunctions = {
    MyCustomScalar: myCustomScalarType
    };

    const jsSchema = makeExecutableSchema({
    typeDefs: schemaString,
    resolvers: resolverFunctions,
    });
  • 使用apollo-type-bigint package .

  • 这两种解决方案都将大整数转换为 string ,我宁愿不使用字符串(我更喜欢数字类型)。

    最佳答案

    正确,没有像 bigInt 这样的概念在 graphQL .
    您可以尝试以下方法之一:

  • 设置类型为Float而不是 Int - 它将处理所有大的 int 值并将它们作为 number 发送
    [以下是技术选项,虽然你说你不喜欢 string解决方案]
  • 设置类型为String ,正如你所描述的
  • Give(npm 提供的数据类型,例如)BigInt ,正如你所描述的。它将处理大整数,但会将您的值转换为 string

  • npm bigInt 依赖选项:
  • https://www.npmjs.com/package/apollo-type-bigint
  • https://www.npmjs.com/package/graphql-bigint
  • https://www.npmjs.com/package/graphql-type-bigint
  • 关于javascript - 如何使用 GraphQL 处理 long Int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62893664/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com