2013-03-22 17 views
7

Ben aşağıdaki sunucu kodu vardır:kullanma Meteor.methods ve 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] ] } } }); 
    } 
}); 

ve bu müşteri kodu: benim sunucu günlükleri alıyorum

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 

ama ... nedenini bulmaya cantt

+0

Meteor terminalinizi aynı anda kontrol edebilir misiniz? – Akshat

+0

Alttaki hata mesajı meteor terminali .. –

+0

Coğrafi bir sorgu için alanlar indekslediniz mi? Meteor mongodb hatalarını gizlemek olabilir – Akshat

cevap

16

Bir Koleksiyon imlecini iade edemezsiniz - EJSON nesnesine dönüştürülemez. Sorgunuzun sonuçlarını bir dizi olarak döndürün.

örn.

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

Hakkı onu kabul edeceğiz böylece o bir cevap olarak gönderebilir yüzden beni bir çözüm bulmak yardımcı oldu, ama bu reaktif veri kaynağı olmayacaktır. Belki de bu durumda 'Meteor.methods' yerine' Meteor.publish' kullanmaktan daha iyi olur muydunuz? –

İlgili konular