Wie kann ich mich explizit von einer Sammlung abmelden?

8

Ich habe eine MongoDB mit einer großen "Nachrichten" -Sammlung; alle Nachrichten, die zu einem bestimmten groupId gehören. Also habe ich mit einer Veröffentlichung wie dieser begonnen:

%Vor%

und ein Abonnement wie folgt:

%Vor%

Das brachte mich in Schwierigkeiten, weil currentGroupId zu undefiniert ist, aber sill mongod würde die CPU verbrauchen, um Nachrichten mit groupId == null zu finden (obwohl ich weiß, dass es keine gibt).

Nun habe ich versucht, die Publikation wie folgt neu zu schreiben:

%Vor%

und / oder um das Abonnement neu zu schreiben:

%Vor%

was anfangs hilft. Aber sobald currentGroupId wieder undefiniert wird (weil der Benutzer zu einer anderen Seite navigiert), ist mongod immer noch damit beschäftigt, die Datenbank für die letzte subskribierte groupId erneut anzufragen. Wie kann ich mich von einer Publikation abmelden, so dass der Mongod nicht mehr abgefragt wird?

    
Dejan 27.05.2013, 15:13
quelle

4 Antworten

5

Einfach eine Bedingung zur Veröffentlichung hinzufügen:

%Vor%

und das Abonnement beibehalten:

%Vor%

erledigt den Job.

Es ist nicht notwendig, die Veröffentlichung explizit zu stoppen. Schließlich wird die MongoDB nicht mehr abgefragt, nachdem die aktuell ausgeführte Abfrage beendet wurde und noch eine andere ausgegeben wurde (die irgendwo in das System eingereiht zu sein scheint).

    
Dejan 28.05.2013, 13:06
quelle
7

Laut der Dokumentation muss Ссылка

sein
  

this.stop ()   Rufen Sie innerhalb der Veröffentlichungsfunktion auf. Stoppt das Abonnement dieses Kunden;   Der Rückruf onError wird auf dem Client nicht aufgerufen.

So etwas wie

%Vor%

Und ich denke, auf der Clientseite kannst du einfach dein if / else wie in deinem ersten Beispiel entfernen

%Vor%     
Michael 27.05.2013 18:02
quelle
6

Ich fand es einfacher und unkomplizierter, die Funktion .stop() für den Handler aufzurufen, der vom Aufruf .subscribe() zurückgegeben wird:

%Vor%     
tivoni 13.03.2016 17:13
quelle
0

In deinem Fall solltest du autorun

stoppen

Es gibt ein Beispiel in der Dokumentation

Ihr Autorun wird tatsächlich mit einem Parameter aufgerufen, mit dem Sie ihn stoppen können:

%Vor%     
Dr Gorb 27.05.2013 19:06
quelle

Tags und Links