Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GraphQL在args中将字符串转换为浮点数_Javascript_Node.js_Graphql - Fatal编程技术网

Javascript GraphQL在args中将字符串转换为浮点数

Javascript GraphQL在args中将字符串转换为浮点数,javascript,node.js,graphql,Javascript,Node.js,Graphql,目前,我从GET url参数中获取地理位置坐标,这些参数实际上将它们转换成字符串。i、 e 对于这样的url: www.example.com?geolocation=-23.12345&geolocation=12.12345 它将其转换为:[“-23.12345”,“12.12345”] 是否可以将其作为字符串数组发送,然后GraphQL可以在测试它之前重新格式化 下面是我的一些GraphQL代码: const geolocation = graphql.GraphQLNonNull

目前,我从GET url参数中获取地理位置坐标,这些参数实际上将它们转换成字符串。i、 e

对于这样的url:
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
                }
            }
        }
    })

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

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

    return results
}

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

是的,您可以这样做,但不,您确实不应该这样做。地理位置是一个正好由两个数字组成的元组,它应该是一个具有
经度
纬度
属性的对象,而不是任意多个数字的数组/列表。@Bergi我相信Google的location API就是这样返回地理位置的。我正在重新学习一些旧代码。另外,你能给我指一下文档的方向吗,甚至只是写下答案?谢谢。你希望得到什么样的“文档”呢?即使谷歌的location API做到了这一点,在GraphQL中,使用自定义标量类型(只允许长度为2的数字数组)来表示也要好得多。@Bergi强制将字符串转换为浮点的代码是什么?我应该把转换放在哪里?我想你是对的。拥有经度/纬度对象将更加清晰。我认为谷歌或PostgreSQL的地理定位数组顺序不对,因为如果你把它们的坐标放进去,它们的地图就不一样了。