|
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); |
|
}); |
|
} |