Javascript GraphQL在args中将字符串转换为浮点数
目前,我从GET url参数中获取地理位置坐标,这些参数实际上将它们转换成字符串。i、 e 对于这样的url: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
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的地理定位数组顺序不对,因为如果你把它们的坐标放进去,它们的地图就不一样了。