Abonnieren der Meteor.Users-Sammlung

9
%Vor%

Ich möchte jetzt die vom Client abgefragten Verzeichnislisten wie directory.findOne() von der Browserkonsole holen. // Testzwecke

Doing directory=Meteor.subscribe('directory') / directory=Meteor.Collection('directory') und directory.findOne() funktioniert nicht, aber wenn ich directory=new Meteor.Collection('directory') mache, funktioniert es und gibt undefined zurück und ich wette, es schafft eine Mongo-Sammlung auf dem Server, die ich nicht mag, weil Die USER-Sammlung ist bereits vorhanden und verweist auf eine neue Sammlung anstelle der USER-Sammlung.

HINWEIS: Ich möchte nicht damit umgehen, wie die Meteor.users-Sammlung ihre Funktion verarbeitet ... Ich möchte nur einige spezifische Daten von ihr abrufen, indem ich ein anderes Handle verwende, das nur die angegebenen Felder zurückgibt und seinen Standard nicht überschreibt Funktion ...

Beispiel:

%Vor%     
o2kevin 08.08.2014, 08:03
quelle

2 Antworten

12

Wenn Sie möchten, dass diese Einrichtung funktioniert, müssen Sie Folgendes tun:

%Vor%

Nein auf der Clientseite müssen Sie eine clientseitige Only-Sammlung definieren:

%Vor%

und abonnieren Sie den entsprechenden Datensatz:

%Vor%

Das sollte jetzt funktionieren. Lass es mich wissen, wenn du denkst, dass diese Erklärung nicht klar genug ist.

BEARBEITEN

Hier fungieren die self.added/changed/removed -Methoden mehr oder weniger als Event-Dispatcher. Kurz gesagt geben sie jedem Kunden, der angerufen hat, Anweisungen %Vor%

über die Updates, die auf die Sammlung des Clients namens thisNameMatters angewendet werden sollen, unter der Annahme, dass diese Sammlung existiert. Der Name - als erster Parameter übergeben - kann fast beliebig gewählt werden, aber wenn es keine entsprechende Sammlung auf der Client-Seite gibt, werden alle Updates ignoriert. Beachten Sie, dass diese Sammlung nur clientseitig sein kann und nicht unbedingt einer "echten" Sammlung in Ihrer Datenbank entsprechen muss.

Wenn Sie einen Cursor von Ihrer publish -Methode zurückgeben, ist dies nur eine Verknüpfung für den obigen Code, mit dem einzigen Unterschied, dass der Name einer tatsächlichen Sammlung anstelle von theNameMatters verwendet wird. Mit diesem Mechanismus können Sie so viele "Spiegel" Ihrer Datensätze erstellen, wie Sie möchten. In einigen Situationen könnte dies sehr nützlich sein. Das einzige Problem ist, dass diese "Sammlungen" schreibgeschützt sind (was total Sinn macht BTW), denn wenn sie nicht auf dem Server definiert sind, existieren die entsprechenden 'insert / update / remove' Methoden nicht.

    
Tomasz Lenarcik 08.08.2014, 12:50
quelle
5

Die Sammlung wird Meteor.users genannt, und es ist nicht notwendig, eine neue weder auf dem Server noch auf dem Client zu deklarieren .

Ihr Veröffentlichungs- / Abonnementcode ist korrekt:

%Vor%

Um auf Dokumente in der Benutzersammlung zuzugreifen, die vom Server veröffentlicht wurden, müssen Sie Folgendes tun:

%Vor%

oder

%Vor%     
Tobold 08.08.2014 08:51
quelle

Tags und Links