Skip to content

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
<head>
<title>dynamicSubscriptions</title>
</head>
<body>
{{> hello}}
</body>
<template name="hello">
<h1>Hello World!</h1>
<ul>
{{#each kids}}
<li>{{name}}</li>
{{/each}}
</ul>
</template>
Kids = new Meteor.Collection('kids');
Parents = new Meteor.Collection('parents');
if (Meteor.isClient) {
Template.hello.kids = function () {
return Kids.find();
};
Meteor.startup(function(){
Meteor.subscribe('parents');
Deps.autorun(function() {
parent = Parents.findOne();
console.log("Found parent", parent);
if (!parent) return;
Meteor.subscribe('kids', parent);
});
});
}
if (Meteor.isServer) {
Meteor.startup(function () {
Meteor.publish('parents', function() {
return Parents.find();
});
Meteor.publish('kids', function (parent) {
return Kids.find({ _id: { $in: parent.childrenIds } });
//return Kids.find();
});
});
Meteor.startup( function(){
Parents.remove({});
Kids.remove({});
parentId = Parents.insert({name:'alfred', childrenIds:[]});
console.log("Inserted parentId", parentId);
kid1Id = Kids.insert({name:'fred'});
Parents.update(parentId, {$push: {childrenIds:kid1Id}});
console.log("After first push, parent is", Parents.findOne());
kid2Id = Kids.insert({name:'george'});
Meteor.setTimeout(function() {
Parents.update(parentId, {$push: {childrenIds:kid2Id}});
console.log("After second push, parent is", Parents.findOne());
}, 10*1000);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.