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
Post a Comment