Meteor Publish / Subscribe-Strategien für eindeutige clientseitige Sammlungen

Ich frage mich, wie ich mit Meteor am besten mit verschiedenen clientseitigen Sammlungen umgehen kann, die dieselbe serverseitige Datenbanksammlung gemeinsam haben. Betrachten Sie das folgende Beispiel: Ich habe einUser Sammlung, und auf meiner Client-Seite habe ich eineListe der Benutzer, die Freunde sind und ich habe eine Suchfunktion, die eine Abfrage für die gesamte Benutzerdatenbank durchführt und ein zurückgibtListe der Benutzernamen, die der Abfrage entsprechen.

Bei der serverseitigen Methode "Veröffentlichen" gibt es zwei Abfragen für dieselbe Auflistung, die unterschiedliche Dokumentensätze zurückgeben. Sollten diese Daten clientseitig in zwei getrennte Sammlungen eingehen? Oder sollten alle Benutzerdokumente, die beiden Abfragen entsprechen, in derselben Sammlung landen? Wenn dies der Fall ist, würde ich dann den Code duplizieren, der sowohl für die serverseitige als auch für die clientseitige Abfrage verwendet wird?

Auf dem Server:

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

Auf dem Client:

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

Dies scheint eine plausible, aber keine optimale Lösung zu sein. Was ist, wenn ich eine neue clientseitige Sammlung erstellen möchte, die aus Suchergebnissen mehrerer serverseitiger Sammlungen besteht?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage