将 JSON 中的多个坐标发送到 RethinkDB 以创建 r.polygon 的最佳方法是什么?
What's the best way to send in multiple coordinates in a JSON to RethinkDB in order to create an r.polygon?
我正在使用带有 RethinkDB 的 Express 服务器,我想将多个坐标发送到我在 RethinkDB 上的 'locations' table 并创建一个 r.polygon()。我了解如何通过 RethinkDB 的数据浏览器进行查询,但我无法弄清楚如何通过 JSON 将它从客户端发送到服务器并通过我的查询将其插入那里。
我基本上想这样做:
r.db('places').table('locations').insert({
name: req.body.name,
bounds: r.polygon(req.body.bounds)
})
其中 req.body.bounds 看起来像这样:
[long, lat],[long, lat], [long, lat]
我无法将它作为一个字符串发送,因为它会被读取为一个输入而不是三个数组。我确定有 'right in front of me' 方法,但我画的是空白。
最好的方法是什么?
编辑: 澄清一下,我的问题是,我的 JSON 应该是什么样子,我的服务器应该如何接收它?
这就是 RethinkDB 想要的多边形:
r.polygon([lon1, lat1], [lon2, lat2], [lon3, lat3], ...) → polygon
根据建议,我已将 r.args() 添加到我的代码中:
r.db('places').table('locations').insert({
name: req.body.name,
bounds: r.polygon(r.args(req.body.bounds))
})
编辑
好吧,我很笨,我的一个坐标打错了!
将其作为数组的数组发送,并将其包装在服务器端的 r.args() 中。
您需要 r.args
将数组解压缩为 r.polygon 的参数。 https://www.rethinkdb.com/api/javascript/args/
假设 req.body.bounds 是:
[[long, lat],[long, lat], [long, lat]]
并且您正在提交来自客户端的原始 JSON 字符串。
首先需要解码JSON payload,得到bounds
字段,用args
包裹如下:
var body = JSON.parse(req.body)
r.db('places').table('locations').insert({
name: req.body.name,
bounds: r.polygon(r.args(body.bounds))
})
我正在使用带有 RethinkDB 的 Express 服务器,我想将多个坐标发送到我在 RethinkDB 上的 'locations' table 并创建一个 r.polygon()。我了解如何通过 RethinkDB 的数据浏览器进行查询,但我无法弄清楚如何通过 JSON 将它从客户端发送到服务器并通过我的查询将其插入那里。
我基本上想这样做:
r.db('places').table('locations').insert({
name: req.body.name,
bounds: r.polygon(req.body.bounds)
})
其中 req.body.bounds 看起来像这样:
[long, lat],[long, lat], [long, lat]
我无法将它作为一个字符串发送,因为它会被读取为一个输入而不是三个数组。我确定有 'right in front of me' 方法,但我画的是空白。
最好的方法是什么?
编辑: 澄清一下,我的问题是,我的 JSON 应该是什么样子,我的服务器应该如何接收它?
这就是 RethinkDB 想要的多边形:
r.polygon([lon1, lat1], [lon2, lat2], [lon3, lat3], ...) → polygon
根据建议,我已将 r.args() 添加到我的代码中:
r.db('places').table('locations').insert({
name: req.body.name,
bounds: r.polygon(r.args(req.body.bounds))
})
编辑 好吧,我很笨,我的一个坐标打错了!
将其作为数组的数组发送,并将其包装在服务器端的 r.args() 中。
您需要 r.args
将数组解压缩为 r.polygon 的参数。 https://www.rethinkdb.com/api/javascript/args/
假设 req.body.bounds 是:
[[long, lat],[long, lat], [long, lat]]
并且您正在提交来自客户端的原始 JSON 字符串。
首先需要解码JSON payload,得到bounds
字段,用args
包裹如下:
var body = JSON.parse(req.body)
r.db('places').table('locations').insert({
name: req.body.name,
bounds: r.polygon(r.args(body.bounds))
})