7

私は次のサーバーコードを持っています:

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

でも理由がわからない…

4

1 に答える 1

16

Collection カーソルを返すことはできません。EJSON オブジェクトに変換することはできません。クエリの結果を配列として返します。

例えば

return Lists.find(...).fetch();
于 2013-03-28T13:51:41.893 に答える