javascript – 使用Meteor.methods和Meteor.call

前端之家收集整理的这篇文章主要介绍了javascript – 使用Meteor.methods和Meteor.call前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下服务器代码
Meteor.startup(function () {
  Meteor.publish("AllMessages",function() {
    lists._ensureIndex( { location : "2d" } );
    return lists.find();
  });
});

Meteor.methods({
  getListsWithinBounds: function(bounds) {
    lists._ensureIndex( { location : "2d" } );
    return lists.find( { "location": { "$within": { "$Box": [ [bounds.bottomLeftLng,bounds.bottomLeftLat],[bounds.topRightLng,bounds.topRightLat] ] } } } );
  }
});

和这个客户端代码

Meteor.startup(function () {
  map = L.map('map_canvas').locate({setView: true,maxZoom: 21});
  L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png',{
      attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
  }).addTo(map);
    bounds = {};    
    map.on('locationfound',function(e){ 
      bounds.bottomLeftLat = map.getBounds()._southWest.lat;
      bounds.bottomLeftLng = map.getBounds()._southWest.lng;
      bounds.topRightLat = map.getBounds()._northEast.lat;
      bounds.topRightLng = map.getBounds()._northEast.lng;
      console.log(bounds);
      Meteor.call("getListsWithinBounds",bounds,function(err,result) {
        console.log('call'+result); // should log a LocalCursor pointing to the relevant lists
      });
    });
});

我上了我的服务器日志:

Internal exception while processing message { msg: 'method',method: 'getListsWithinBounds',params: 
   [ { bottomLeftLat: 50.05008477838258,bottomLeftLng: 0.384521484375,topRightLat: 51.63847621195153,topRightLng: 8.3221435546875 } ],id: '2' } undefined

但我不知道为什么……

解决方法

您无法返回Collection游标 – 它无法转换为EJSON对象.将查询结果作为数组返回.

例如

return Lists.find(...).fetch();

猜你在找的JavaScript相关文章