将 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))
})