Meteorjs在客户端使用$ near附近

时间:2014-04-20 02:36:15

标签: mongodb collections meteor

我尝试在客户端获取集合的光标。

以下代码:

服务器

// make sure that $near stuff works
Meteor.startup(function () {
  Business._ensureIndex({'data.located':'2dsphere'});
});
// publish my collection
Meteor.publish('business', function(sq){
return Business.find(sq);
});

客户&服务器

 Business = new Meteor.Collection('business');

客户端

var searchQuery = {};
searchQuery['data.located'] = {
    $near : {
        $geometry : {
            type : 'Point',
            coordinates : [50, 50]
        },
        $maxDistance : 50000
    }
};
Meteor.subscribe('business', searchQuery);
Business.find(searchQuery);

问题是,游标有0个结果。当我在服务器端使用此搜索时,我得到了正确的结果数!在渲染我的模板时调用Collection.find()方法。

首先我认为它的异步是因为我试图在超时回调中得到结果,但这并没有解决问题。

$ near searchfunction是否有可能在客户端使用?如果不可能怎么解决这个问题?

1 个答案:

答案 0 :(得分:1)

根据使用$near的{​​{3}}排序在meteor v0.7.1.1中以最小化方式实现。

看起来你正在find之后立即执行subscribe。如果是这种情况,则在find执行之前,数据不会被传输到客户端。假设您的查询是正确的,如果您只是等待数据准备就绪,它可能会起作用。尝试这样的事情:

Meteor.subscribe('business', searchQuery, function() {
  console.log(Business.findOne(searchQuery));
});

请注意,您的代码会显示订阅时没有所需的名称('business') - 我假设这是一个错字。