publish subscribe - Meteor: Why does my subscription not work? -


i have following on server:

items.allow({ 'insert': function (userid,doc) {   return true;  } });   meteor.methods({ getchildren: function(parentid) {                 var children = items.find({parent: parentid});                 console.log("children: "+children.count());                 meteor.publish(parentid, function() {                     console.log("publishing : "+parentid);                     return children;                 });                 return true; } }); 

following on collections.js available both server , client...

items = new mongo.collection("folders"); 

next up, client has following:

meteor.startup(function() {     items.insert({name: "helpdocs", parent: "documentsa"});     items.insert({name: "code", parent: "documentsa"});     items.insert({name: "unit tests", parent: "documentsa"}); });  template.filetree.events({   'click .mainfolders': function (e, t) {     var elemid = e.currenttarget.id;     var children = null;     meteor.call('getchildren',elemid, function(error, result){         console.log("subscribing");         var start = new date().gettime();         children = meteor.subscribe(elemid, function() {             session.set(elemid, true);             console.log("subscribed");             var end = new date().gettime();             console.log(end - start);         });         meteor.settimeout(function() {                children.foreach(function(child) {                     console.log("rendering");                     blaze.render(template.filetree, $('#'+elemid).get(0));                 });             meteor.stop(elemid);         }, 800);     });   } }); 

it fails @ children.foreach following exception...

[log] exception in settimeout callback: http://0.0.0.0:3000/site/client/filetree.js?83d0c4ebb8e92bb0e03e82f52ea4c0510cc0d831:21:35 (meteor.js, line 888) withvalue@http://0.0.0.0:3000/packages/meteor.js?43b7958c1598803e94014f27f5f622b0bddc0aaf:955:21 http://0.0.0.0:3000/packages/meteor.js?43b7958c1598803e94014f27f5f622b0bddc0aaf:435:54 http://0.0.0.0:3000/packages/meteor.js?43b7958c1598803e94014f27f5f622b0bddc0aaf:983:27

the subscription ready within 800 milliseconds timeout set. giving variable wrong cursor?

meteor.subscribe() not return cursor. per docs, "returns handle provides stop() , ready() methods."

instead of :

    children = meteor.subscribe(elemid, function() {         session.set(elemid, true);         console.log("subscribed");         var end = new date().gettime();         console.log(end - start);     }); 

you might try (untested):

    meteor.subscribe(elemid, function() {         session.set(elemid, true);         console.log("subscribed");         var end = new date().gettime();         console.log(end - start);          children = items.find();     }); 

Comments