【问题标题】:Can't extract geo keys for location无法提取地理位置的地理键
【发布时间】:2019-04-06 09:36:05
【问题描述】:

我正在尝试将位置存储在 MongoDB 数据库中。到目前为止,我创建了一个包含字段的架构 -

lastLocation: {
type: [Number, Number],
index: '2dsphere'
}, 

因此,当我尝试使用邮递员增加​​值时,所有其他字段都存储在数据库中,但不存储位置。

我已尝试发送下面给出的原始数据 -

{ ...."lastLocation": [123.443,123.342],.....}

并得到以下错误 -

can\'t project geometry into spherical CRS: [ 123.443,123.342 ]

我想要可以在邮递员中作为原始数据发送的虚拟数据。那么,谁能给我原始数据?如果我在 nodejs 代码的其他部分也有错误,还请提出建议。我在这里使用猫鼬。

谢谢

【问题讨论】:

  • 对不起,但有点不清楚您的问题实际上在这里问什么。您是否真的试图将新数据“插入”到 MongoDB 并且它抱怨提供的坐标无效?如果是这样,那么您可能应该包括发送的实际数据、执行插入的代码和完全从驱动程序响应返回的“完整”错误。如果您实际上要求的是有效的“虚拟数据”。然后在谷歌地图上查找您当前的位置并获取坐标。这些都是有效的,实际查找样本数据集也很简单。
  • 我要求的是 json 数据格式,并不关心应该是什么值。
  • 要明确“JSON 格式”不是您的问题。简单的事实是123.443, 123.342 不是有效的球坐标。但是像[-122.5076404, 37.7576793 ] 这样的东西实际上是。这就是您抱怨的错误。
  • 我刚刚将 lastLocation 更改为 location 并且一切正常!奇怪!!

标签: node.js mongodb express mongoose postman


【解决方案1】:

尝试这些更改。它可能会对你有所帮助。

const location = {
    lastLocation: {
        type: {
            type: String,
            default: 'Point'
        },
        coordinates: []
    }
}
location.index({
    location: '2dsphere'
})

【讨论】:

  • 这些更改似乎确实是从其他人的答案中复制而来的。 (可能是most original source here)虽然整个“类型/类型”猫鼬模式混淆确实是一个问题,但这并不是这里的问题似乎真正涉及的问题。
  • 我刚刚将 lastLocation 更改为 location 并且一切正常!奇怪!!
  • 但是你的评论也帮助了我。谢谢!
猜你喜欢
  • 2020-07-20
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 2017-04-17
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多