无法提取地理位置的地理键
Posted
技术标签:
【中文标题】无法提取地理位置的地理键【英文标题】: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 并且一切正常!奇怪!!
【参考方案1】:
尝试这些更改。它可能会对你有所帮助。
const location =
lastLocation:
type:
type: String,
default: 'Point'
,
coordinates: []
location.index(
location: '2dsphere'
)
【讨论】:
这些更改似乎确实是从其他人的答案中复制而来的。 (可能是most original source here)虽然整个“类型/类型”猫鼬模式混淆确实是一个问题,但这并不是这里的问题似乎真正涉及的问题。 我刚刚将 lastLocation 更改为 location 并且一切正常!奇怪!! 但是你的评论也帮助了我。谢谢!以上是关于无法提取地理位置的地理键的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose GeoJSON 在使用中间件时抛出“MongoError:无法提取地理键”