javascript - Meteor : Changes in collections are not reflected in rendered HTML -
i have been trying doing simple publish/subscribe in meteor , cannot work expect reading sources available such meteor documentation.
i using macbook pro osx yosemite , running node.js v0.10.40, meteor v1.1.0.2 , chrome version 43.0.2357.132 (64-bit).
here experiencing 2 different examples:
first: simple todos tutorial.
simple-todos.html
<head> <title>todo list</title> </head> <body> <div class="container"> <header> <h1>todo list</h1> </header> <ul> {{#each tasks}} {{> task}} {{/each}} </ul> </div> </body> <template name="task"> <li>{{text}}</li> </template>
simple-todos.js
tasks = new meteor.collection("tasks"); // simple-todos.js if (meteor.isclient) { // code runs on client template.body.helpers({ tasks: function(){ tasks.find({}); } }); }
problem description
the tutorial states when adding items tasks
should reflected live in browser. not. have tried adding items tasks.insert({text: "todo server", createdat: new date()})
in js console in chrome , in meteor shell
. have added items using meteor mongo
, still no changes in rendered client view
the autopublish package installed , can insert , query tasks
collection js console in browser, changes not reflected in rendered html.
second: simple publish/subscribe scenario
basic.html
<head> <title>basic</title> </head> <body> <h1>welcome meteor!</h1> <p>text gets pushed</p> </body>
basic.js.
messagecoll = new mongo.collection("messages"); if(meteor.isserver){ meteor.publish("messages",function(){ messagecoll.find({}); }) } if(meteor.isclient){ meteor.subscribe("messages", { onready: function () { console.log("onready , items arrive", arguments); }, onerror: function () { console.log("onerror", arguments); } }); }
problem description
when autopublish package added project works intended. can insert new items js console in chrome , can query messagecoll
collection , retrieve results well.
when autopublish package removed can insert items in messagecoll
collection js console in chrome , verify have been added querying collection in meteor shell
. when try query either using messagecoll.findone()
or messagecoll.find().fetch()
return value undefined
.
all changes being done in structure of html-document gets pushed expected.
neither onready
or onerror
callback functions gets called, points toward issue related subscribe method.
i think both problems pretty straightforward solve (but frustrating when can't work out why - i've been there). basically, aren't returning functions code doesn't have result.
in template helper need add return
this:
tasks: function(){ return tasks.find({}); }
similarly, in publication need return
this:
meteor.publish("messages",function(){ return messagecoll.find({}); })
Comments
Post a Comment