sql >> Databáze >  >> NoSQL >> MongoDB

Strategie publikovat/předplatit Meteor pro jedinečné kolekce na straně klienta

Ve sdílené oblasti:

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
}

Na serveru:

Meteor.publish("searchUsers", getSearchUsers);
Meteor.publish("friendUsers", getFriendUsers);

Na klientovi:

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

Klíčovým přínosem je, že to, co se děje v zákulisí při přenosu dat po drátě, není zřejmé. Zdá se, že Meteor kombinuje záznamy, které byly nalezeny v různých dotazech na serveru, a odeslat je klientovi. Poté je na klientovi, aby znovu spustil stejný dotaz a rozdělil je.

Řekněme například, že máte 20 záznamů v kolekci na straně serveru. Pak máte dvě publikace:první odpovídá 5 záznamům, druhé odpovídá 6, z nichž 2 jsou stejné. Meteor odešle 9 záznamů. Na klientovi pak spustíte přesně tytéž dotazy, které jste provedli na serveru, a měli byste skončit s 5 a 6 záznamy.



  1. Automatizujte kontrolu stavu databáze

  2. Spark-on-HBase:Konektor HBase založený na DataFrame

  3. Heslo MongoDB s @

  4. $lookup vrací prázdné pole