首页 > 解决方案 > GraphQL 将字符串转换为 args 中的浮点数

问题描述

目前,我正在从我的 GET url 参数中获取地理位置坐标,这些参数实际上是字符串。IE

对于这样的网址: www.example.com?geolocation=-23.12345&geolocation=12.12345

它将其转换为:["-23.12345", "12.12345"]

是否可以将其作为字符串数组发送,然后 GraphQL 可以在测试之前对其重新格式化?

这是我的一些 GraphQL 代码:

const geolocation =
    graphql.GraphQLNonNull(
        graphql.GraphQLList(
            graphql.GraphQLNonNull(
                graphql.GraphQLFloat
            )
        )
    )

var query =
    new graphql.GraphQLObjectType({
        name: "Query",
        fields:
        {
            findMaps:
            {
                args:
                {
                    geolocation:
                    {
                        type:
                            geolocation,
                    },
                },
                type:
                    convertToManyType(
                        map,
                        "map"
                    ),
                async resolve (
                    _,
                    args,
                    req
                )
                {
                    const results =
                        await findMaps(args)

                    return results
                }
            }
        }
    })

标签: javascriptnode.jsgraphql

解决方案


您可以在使用它们之前将字符串转换为浮点数:

async resolve (
    _,
    args,
    req
)
{
    const results =
        await findMaps(args.map(parseFloat))

    return results
}

您还可以分析它们并在需要时抛出异常。


推荐阅读