Ich habe zwei Sammlungen
und ich möchte nur die Angebote für den angemeldeten Benutzer veröffentlichen, die für ihn freigegeben wurden.
Tatsächlich mache ich das, indem ich ein Helfer-Array (visibleOffers) benutze, das ich für jedes ShareRelations-Element durchläuft und dieses Array später im Offers.find als $ in-Selektor verwende.
Ich frage mich, ob dies der Meteorweg ist, um dies zu tun, oder ob ich mit weniger oder besserem Code auskommen könnte?
Mein tatsächlicher Code zum Veröffentlichen der Angebote lautet wie folgt:
%Vor%Außerdem hat die tatsächliche Lösung den Nachteil, dass, wenn eine neue Share-Beziehung erstellt wird, die Offices-Sammlung auf dem Client nicht sofort mit dem neu sichtbaren Angebot aktualisiert wird (lesen Sie: Neuladen der Seite erforderlich. Aber ich nicht.) Sicher, wenn dies der Fall ist wegen dieser Veröffentlichungsmethode oder wegen eines anderen Codes ist diese Frage nicht primär wegen dieses Problems).
Was Sie suchen, ist eine reaktive Verbindung. Sie können dies erreichen, indem Sie entweder direkt in der Veröffentlichungsfunktion beobachten oder eine Bibliothek für Sie verwenden. Es wird erwartet, dass der Meteor-Kern irgendwann eine Join-Bibliothek hat, aber bis dahin " Ich empfehle, publish-with-relations zu verwenden. Sehen Sie sich die Dokumentation an, aber ich denke, die gewünschte Veröffentlichungsfunktion sieht ungefähr so aus:
%Vor% Dies sollte reaktiv alle ShareRelations
für den Benutzer und alle zugehörigen Offers
veröffentlichen. Hoffentlich veröffentlichen beide kein Problem.
PWR ist ein ziemlich legales Paket - einige von uns verwenden es in der Produktion, und Tom Coleman trägt dazu bei. Das Einzige, worüber ich euch warnen wird ist, dass die aktuelle Version in Atmosphäre (v0.1.5) einen Fehler hat, der zu einem ernsthaften Speicherverlust führen wird. Bis das Problem behoben ist, finden Sie in meinem Blogpost Informationen zum Ausführen einer aktualisierten lokalen Kopie.
Der Meteorblog entdecken hat einen ausgezeichneten Beitrag auf reaktiven Verbindungen , die ich sehr empfehlen zu lesen .
Die Art und Weise, dies zu tun, folgt dieser Frage mit observeChanges (). Ich versuche immer noch herauszufinden, wie man alles für mein Beispiel funktioniert, siehe Meteor, Eins-zu-Viele-Beziehung & amp; Feld nur zur clientseitigen Sammlung in Publish hinzufügen?
Sie können die Reaktiv veröffentlichen Paket (Ich bin einer der Autoren):
%Vor% Sie können Ihren vorhandenen nicht-reaktiven Code einfach in ein autorun
einfügen und es wird zu arbeiten beginnen. Nur vorsichtig sein, um genau zu sein, welche Felder auf, weil abfragen, wenn Sie auf allen Feldern abfragen dann autorun
auf jedem Feld Wechsel ShareRelations
erneut ausgeführt werden, nicht nur offerId
.