var Items = new Meteor.Collection("items"); if (Meteor.isServer) { // Bootstrap data -- server only Meteor.startup(function () { if (Items.find().count() === 0) { Items.insert({title: "item #01", enabled: true, processed: true}); Items.insert({title: "item #02", enabled: false, processed: false}); Items.insert({title: "item #03", enabled: false, processed: false}); Items.insert({title: "item #04", enabled: false, processed: false}); Items.insert({title: "item #05", enabled: false, processed: true}); Items.insert({title: "item #06", enabled: true, processed: true}); Items.insert({title: "item #07", enabled: false, processed: true}); Items.insert({title: "item #08", enabled: true, processed: false}); Items.insert({title: "item #09", enabled: false, processed: true}); Items.insert({title: "item #10", enabled: true, processed: true}); Items.insert({title: "item #11", enabled: true, processed: true}); Items.insert({title: "item #12", enabled: true, processed: false}); Items.insert({title: "item #13", enabled: false, processed: true}); Items.insert({title: "item #14", enabled: true, processed: true}); Items.insert({title: "item #15", enabled: false, processed: false}); } }); } var getEnabledItems = function (search1) { return Items.find({enabled: true, title: new RegExp(RegExp.escape(search1 || ""), 'i')}); }; var getProcessedItems = function (search2) { return Items.find({processed: true, title: new RegExp(RegExp.escape(search2 || ""), 'i')}); } if (Meteor.isServer) { Meteor.publish('enabled_items', function (search1) { return getEnabledItems(search1); }); Meteor.publish('processed_items', function (search2) { return getProcessedItems(search2); }); } if (Meteor.isClient) { Meteor.autosubscribe(function () { Meteor.subscribe('enabled_items', Session.get("search1")); Meteor.subscribe('processed_items', Session.get("search2")); }); Template.main.enabledItems = function() { return getEnabledItems(Session.get("search1")); }; Template.main.processedItems = function() { return getProcessedItems(Session.get("search2")); }; // Basic search filtering Session.get("search1", ""); Session.get("search2", ""); Template.main.search1 = function () { return Session.get("search1"); }; Template.main.search2 = function () { return Session.get("search2"); }; Template.main.events({ "keyup [name='search1']": function (event, template) { Session.set("search1", $(template.find("[name='search1']")).val()); }, "keyup [name='search2']": function (event, template) { Session.set("search2", $(template.find("[name='search2']")).val()); } }); Template.main.preserve([ "[name='search1']", "[name='search2']" ]); } // Utility, shared across client/server, used for search if (!RegExp.escape) { RegExp.escape = function (text) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); }; } ---------------------- Collection View Test {{> main}}