Di area bersama:
function getSearchUsers(query) {
var re = new RegExp(query, "i");
return Users.find({name: {$regex: re}});
}
function getFriendUsers() {
return Users.find({friend: true}); // or however you want this to work
}
Di server:
Meteor.publish("searchUsers", getSearchUsers);
Meteor.publish("friendUsers", getFriendUsers);
Di klien:
Template.search.onCreated(function () {
var self = this;
self.autorun(function () {
self.subscribe("searchUsers", Session.get("searchQuery"));
});
});
Template.friends.onCreated(function () {
this.subscribe("friendUsers");
});
Template.search.helpers({
searchResults: function () {
return getSearchUsers(Session.get("searchQuery"));
}
});
Template.friends.helpers({
results: function () {
return getFriendUsers();
}
});
Pengambilan kunci dari ini adalah bahwa apa yang terjadi di balik layar ketika data ditransfer melalui kabel tidak jelas. Meteor tampaknya menggabungkan catatan yang cocok dengan berbagai kueri di server dan mengirimkannya ke klien. Kemudian terserah klien untuk menjalankan kueri yang sama lagi untuk memisahkannya.
Misalnya, Anda memiliki 20 catatan dalam koleksi sisi server. Anda kemudian memiliki dua publikasi:yang pertama cocok dengan 5 catatan, yang kedua cocok dengan 6, yang 2 di antaranya sama. Meteor akan mengirimkan 9 catatan. Pada klien, Anda kemudian menjalankan kueri yang sama persis dengan yang Anda lakukan di server dan Anda akan mendapatkan masing-masing 5 dan 6 record.