Hi Meteor community. I’m new to Meteor and JavaScript and guess I have some troubles working with templates. I’m storing tweets in a collection. When the page is loaded I want to load a random tweet once and make its text available by a template helper. This is the code I currently have:
main.html
:
<head>
...
</head>
<body>
...
{{> tweet}}
...
</body>
<template name="tweet">
<h1 class="mt-5">{{text}}</h1>
</template>
main.js
:
import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
import './main.html';
Tweets = new Mongo.Collection('tweets');
Template.tweet.onCreated(function tweetOnCreated() {
this.tweet = new ReactiveVar();
this.autorun(() => {
var docs = Tweets.find().fetch();
var ri = Math.floor(Math.random() * docs.length);
var doc = docs[ri];
if (doc) {
this.tweet.set(doc);
console.log(doc);
}
});
});
Template.tweet.helpers({
text() {
return Template.instance().tweet.get().text;
},
});
However, I get an exception and usually multiple calls to console.log()
.
Exception in template helper: text@http://localhost:3000/app/app.js?hash=aac71bf47644c725e86232955c68dc5b0b45af5f:88:43 (meteor.js, line 1048)
http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:3051:21
http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:1715:21
http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:3103:71
_withTemplateInstanceFunc@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:3769:18
http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:3102:52
call@http://localhost:3000/packages/spacebars.js?hash=6f2be25813c793c0b363a6a91ebb029723f294ec:172:23
mustacheImpl@http://localhost:3000/packages/spacebars.js?hash=6f2be25813c793c0b363a6a91ebb029723f294ec:106:30
mustache@http://localhost:3000/packages/spacebars.js?hash=6f2be25813c793c0b363a6a91ebb029723f294ec:110:44
http://localhost:3000/app/app.js?hash=aac71bf47644c725e86232955c68dc5b0b45af5f:40:30
doRender@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:2086:32
http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:1934:24
_withTemplateInstanceFunc@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:3769:18
http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:1932:54
_withCurrentView@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:2271:16
lookup:text:materialize@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:1931:34
_compute@http://localhost:3000/packages/tracker.js?hash=a9bdf2f732520305683f894b4b4d4d49d90cbe05:332:38
Computation@http://localhost:3000/packages/tracker.js?hash=a9bdf2f732520305683f894b4b4d4d49d90cbe05:229:20
autorun@http://localhost:3000/packages/tracker.js?hash=a9bdf2f732520305683f894b4b4d4d49d90cbe05:602:34
autorun@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:1944:29
http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:2080:17
nonreactive@http://localhost:3000/packages/tracker.js?hash=a9bdf2f732520305683f894b4b4d4d49d90cbe05:626:13
_materializeView@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:2079:22
materializeDOMInner@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:1532:31
_materializeDOM@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:1474:22
[native code]
_materializeDOM@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:1483:11
http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:2113:46
nonreactive@http://localhost:3000/packages/tracker.js?hash=a9bdf2f732520305683f894b4b4d4d49d90cbe05:626:13
_materializeView@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:2079:22
render@http://localhost:3000/packages/blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:2370:25
renderToDocument@http://localhost:3000/packages/templating-runtime.js?hash=9b008466a63cfaa8a7f0a8703fb4a6d8d253fb06:101:26
maybeReady@http://localhost:3000/packages/meteor.js?hash=33066830ab46d87e2b249d2780805545e40ce9ba:927:28
loadingCompleted@http://localhost:3000/packages/meteor.js?hash=33066830ab46d87e2b249d2780805545e40ce9ba:939:15
What am I doing wrong?