Strategie publikowania / subskrypcji Meteor dla unikalnych kolekcji po stronie klienta

Korzystając z Meteor, zastanawiam się, jak najlepiej obsługiwać różne kolekcje po stronie klienta, które korzystają z tej samej kolekcji baz danych po stronie serwera. Rozważmy następujący przykład: MamUser kolekcja, a po mojej stronie klienta mamlista użytkowników, którzy są przyjaciółmi i mam funkcję wyszukiwania, która wykonuje zapytanie w całej bazie danych użytkowników, zwracając alista nazw użytkowników pasujących do zapytania.

W metodzie Publikuj po stronie serwera mam dwa zapytania do tej samej kolekcji, które zwracają różne zestawy dokumentów. Czy dane te powinny zostać umieszczone w dwóch oddzielnych kolekcjach po stronie klienta? Czy też wszystkie dokumenty użytkownika, które pasują do obu zapytań, trafiają do tej samej kolekcji? Jeśli to drugie, to czy powielę kod używany zarówno dla zapytania po stronie serwera, jak i po stronie klienta?

Na serwerze:

Meteor.publish('searchResults', function(query){
  var re = new RegExp(query, 'i')
  return Users.find({ 'name' : {$regex: re}})
})

Na kliencie:

Session.set('searchQuery', null)

Meteor.autosubscribe(function(){
  Meteor.subscribe('searchResults', Session.get('searchQuery'))
})

Template.search.events = {
  'keyup #user-search' : function(e){
    Session.set('searchQuery', e.target.value)
  }
}

_.extend(Template.search, {

  searchResults: function() {
    var re = new RegExp(Session.get('searchQuery'), 'i')
    return Users.find({ 'name' : {$regex: re}})
  }
})

Wydaje się, że jest to wiarygodne rozwiązanie, ale nie optymalne. Co jeśli chciałbym utworzyć nową kolekcję po stronie klienta, która składała się z wyników wyszukiwania z wielu kolekcji po stronie serwera?

questionAnswers(3)

yourAnswerToTheQuestion