2016-07-20 4 views
0

Wenn ich Mycollection.find(). Count() in der Konsole des Browsers versuche, bekomme ich die tatsächliche Anzahl der Dokumente. Aber wenn ich es aus meiner app.js Datei angezeigt werden soll:Keine Dokumente zurückgegeben, wenn ich sie aus meiner JS-Datei anzeigen möchte

Mycollection = new Mongo.Collection('mycollection'); 
Template.body.rendered = function() { 
var mycollectionCursor = Mycollection.find(); 
if (mycollectionCursor.count()){ 
console.log(mycollectionCursor.count()); 
}else{ 
console.log("********"); 
}; 

I ******* in meinem Browser bekommen, möchte ich meine Dokumente manipulieren. Was habe ich getan?

Antwort

0

Sie sollten das Abonnement

let handle = Meteor.subscribe(//name of subscription) 

Jetzt in dem Tracker-Check Griff speichern, wenn Abonnement innerhalb der gerenderten Funktion bereit ist

Tracker.autorun(function(c){ 
    if(handle.ready()){ 
    console.log(MyCollection.find().count()) 
    c.stop() 
    } 
}) 

Ich hoffe, es hilft

Danke

+0

Ja :) es hilft mir. Danke Khem ^^ –

+0

Prost ......... –

0

Sie müssen Ihre Daten veröffentlichen und in Ihrem Client abonnieren. Wenn Sie "Autopublish" noch nicht entfernt haben, wird alles, was Sie haben, automatisch veröffentlicht. Wenn Sie also eine Sammlung auf dem Client abfragen (z. B. in einer Hilfsmethode), erhalten Sie Ergebnisse. Dieses Paket ist nur für die schnelle Entwicklung und das Prototyping nützlich, aber in einer realen Anwendung sollte es entfernt werden. Sie sollten Ihre Daten gemäß den Anforderungen und Anwendungsfällen Ihrer App veröffentlichen. (Nicht alle Benutzer haben alle Daten in allen Anwendungsfällen sehen)

+0

Ich entfernte Autopublish und ich verwende Publish/Subscribe von Anfang an. Ich denke, die PB ist nicht da. Irgendwelche Ideen ? –

0

Ich denke, Ihr Problem in der Leitung ist:

if (mycollectionCursor.count()){ 

count() wird eine int Rückkehr eher als ein boolean. Sie müssen überprüfen, ob die Anzahl größer als 0 ist, was darauf hinweist, dass der Cursor Dokumente enthält. Zum Beispiel:

if (mycollectionCursor.count() > 0){ 

oder versuchen Sie es mit dem Ersetzen:

if (Mycollection.count() > 0){ 
+0

if (mycollectionCursor.count()) und if (mycollectionCursor.count()> 0) sind identisch :) –

+0

hast du versucht, console.log (mycollectionCursor.count()) außerhalb des if zu verschieben? – robjwilkins

+0

Ja, und es gibt mir 0 :( –

Verwandte Themen