【发布时间】:2016-02-14 19:26:02
【问题描述】:
我目前正在尝试仅提取用户附近的集合。我已经能够通过我的其他一些收藏在客户端上成功地做到这一点,但在出版物中很难做到这一点。
我的server/index.js 中有以下代码:
Events._ensureIndex({'loc.coordinates':'2dsphere'});
以下是我的server/publications.js:
Meteor.publish('allEventsNearMe', function() {
if (!this.userId) return null;
var user = Meteor.users.findOne(this.userId);
var home = Homes.findOne(user.profile.homeId);
return Events.find({
loc: {
$near: {
$geometry: {
type: "Point",
coordinates: home.loc.coordinates // this is an array ex. [-80, 25]
},
$maxDistance:32187
}
}
});
});
当我尝试订阅此出版物时,我收到以下错误:
来自 sub allEventsNearMe id BDspYdPy6BG4RTP42 错误的异常: 轮询查询时出现异常 {"collectionName":"events","selector":{"loc":{"$near":{"$geometry":{"type":"Point","coordinates":[-80.26824199999999,26.123774]} ,"$maxDistance":32187}}},"options":{"transform":null}}: 无法执行查询:错误处理查询:ns=meteor.events
limit=0 skip=0 planner 返回错误:无法找到索引 $geoNear 查询
我尝试在 Meteor.startup 中包装 Events._ensureIndex,但这也没有奏效。有什么想法吗?
【问题讨论】:
标签: javascript mongodb meteor geospatial