2012-04-27 1 views
6

I modifiziert, um die Rangliste Beispiel zwei Sammlungen zu verwenden:Wie kann ich verwalten, welche Daten mit dem Cache eines Meteor-Clients synchronisiert werden?

Players = new Meteor.Collection("players"); 
Tasks = new Meteor.Collection("tasks"); 

Die Spieler Sammlung der 6-Dokumente im Beispiel definiert hat.

> db.players.count() 
6 

Die Sammlung Aufgaben enthält 48.000 Dokumente.

> db.tasks.count() 
48000 

Sobald ich den Browser zu öffnen, springt Knoten zu 100% CPU und der Kunde eine der Aufgaben Aufzeichnungen nicht sehen kann.

Ich habe versucht, Abfragekriterien zu definieren, aber das funktioniert nur auf dem Server und hilft nicht auf dem Client.

Players.find({name:"Claude Shannon"}).count(); 
1 
Tasks.find({tid:"t36254"}).count(); 
0 

Ich vermute, dass 48.000 Dokumente zu viel zu synchronisieren ist. Das führt dazu, dass Node bei 100% CPU anklagt und der Client Fehler wie diesen wirft: http://i.imgur.com/zPcHO.png.

Wie die Synchronisierung alles, was ich verhindern und nur bestimmte Dokumente aus der Sammlung abrufen?

+1

Ein Teil der Antwort scheint, die Autopublish-Funktion zu deaktivieren. Autopublish macht einfache Beispiele mit einer Handvoll Dokumenten "einfach", aber mit mehr Daten geht es nicht gut. Verwenden Sie im Projektverzeichnis "meteor remove autopublish". Dann schreibe deine eigenen Publish- und Subscribe-Funktionen. –

Antwort

18

Die Autopublikation von Meteor, die alle Ihre Sammlungen an den Kunden veröffentlicht, ist sehr beeindruckend und macht die Dinge schnell, aber es ist wie Rails Scaffolding-Funktionalität - nicht sehr nützlich für echte Anwendungen - es ist für Lernen und Prototyping.

standardmäßig Meteor veröffentlicht automatisch jedes Dokument in Ihrer Sammlung zu jedem angeschlossenen Client. So schalten Sie dieses Verhalten aus, entfernen Sie das Paket:

$ Meteor entfernen autopublish

Dann lernen Sie das Handbuch zu verwenden, zu veröffentlichen und Funktionen abonnieren, die bietet Ihnen die Kontrolle, die Sie brauchen: http://docs.meteor.com/#publishandsubscribe

+1

entfernen auch unsicher: Meteor entfernen unsicher – radtek

+0

@radtek: es entscheidend ist, dass wir das 'insecure' Paket für die Sicherheit entfernen, aber man sollte beachten, dass es das Entfernen der ursprünglichen Frage gar nicht beantworten. – Clawsy

+0

@Clawsy Mein Kommentar ist neben der aktuellen Antwort, keine vollständige Antwort. – radtek

Verwandte Themen