我尝试在客户端获取集合的光标。
以下代码:
服务器
// 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是否有可能在客户端使用?如果不可能怎么解决这个问题?
答案 0 :(得分:1)
根据使用$near
的{{3}}排序在meteor v0.7.1.1中以最小化方式实现。
看起来你正在find
之后立即执行subscribe
。如果是这种情况,则在find
执行之前,数据不会被传输到客户端。假设您的查询是正确的,如果您只是等待数据准备就绪,它可能会起作用。尝试这样的事情:
Meteor.subscribe('business', searchQuery, function() {
console.log(Business.findOne(searchQuery));
});
请注意,您的代码会显示订阅时没有所需的名称('business'
) - 我假设这是一个错字。