Mit Meteor frage ich mich, wie man am besten mit verschiedenen clientseitigen Sammlungen umgehen kann, die dieselbe serverseitige Datenbanksammlung haben. Betrachten Sie das folgende Beispiel: Ich habe eine User
Sammlung, und auf meiner Client-Seite habe ich eine Liste der Benutzer, die Freunde sind und ich habe eine Suchfunktion, die eine Abfrage für die gesamte Benutzerdatenbank durchführt und eine Liste der Benutzernamen zurückgibt das entspricht der Abfrage.Meteor Publish/Subscribe Strategien für einzigartige clientseitige Sammlungen
Bei der serverseitigen Publish-Methode habe ich zwei Abfragen für die gleiche Sammlung, die unterschiedliche Sätze von Dokumenten zurückgeben. Sollten diese Daten auf der Client-Seite in zwei separate Sammlungen gehen? Oder sollten alle Benutzerdokumente, die mit beiden Abfragen übereinstimmen, in derselben Sammlung landen? Wenn das letztere, würde ich dann Code für die serverseitige und clientseitige Abfrage verwendet werden?
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 Lösung, aber keine optimale ein. Was wäre, wenn ich eine neue clientseitige Sammlung erstellen möchte, die aus Suchergebnissen mehrerer serverseitiger Sammlungen besteht?
will einfach eine Anmerkung machen, dass meine Informationen darüber, wie Meteor „verbindet“ die Aufzeichnungen nicht richtig oder wahr sein können. Wenn ein Meteor dev oder jemand, der es besser weiß, dies bestätigen kann, bitte. Meine Annahme basiert auf meinen eigenen persönlichen Beobachtungen. – matb33
Es sieht so aus, als ob meine Beobachtungen bezüglich des Kombinierens korrekt waren. Siehe den "Merge Box" Abschnitt in dieser Antwort: http://stackoverflow.com/a/13867122/962223 – matb33
Wenn ich die Suchfunktionen in einem freigegebenen Ordner, z. lib die Veröffentlichungsfunktionen können sie finden. Wenn ich sie in dieselbe Datei wie die Veröffentlichungsfunktionen lege, werden sie von den Veröffentlichungsfunktionen gefunden, sind aber auf dem Client nicht sichtbar. Ideen? – cramhead