2016-11-09 2 views
0

Ich versuche zu verstehen, wie Meteor Datenbankdatensätze zurückgibt. Ich bin den folgenden Code ausführen:Zurückgeben von MongoDB-Elementen in Meteor

Template.body.helpers({ 
    items(){ 
    return Items.find({}); 
    }, 
    json(){ 
    console.log(this.items()); 
    }, 
    loggedIn(){ 
    return Meteor.userId(); 
    } 
}); 

Ich bin ein wenig verwirrt, warum diese json Methode nicht nur von Leistung und Array, oder genauer gesagt, warum das Kind Werte wirklich nicht scheinen nur Rückkehr ein Array von Werten.

Ich kann die Werte inline HTML mit Leerzeichen, aber ich bin mir nicht sicher, wie diese Werte durch js zugreifen. Was für eine einfache Sache vermisse ich hier?

Antwort

1

Wenn Sie den Datenbankdatensatz zwischen mehreren Helfern oder sogar zwischen Vorlagen und Routen analysieren möchten, verwenden Sie keine Sitzungsvariablen.

Für Ihr Beispiel:

Template.body.helpers({ 
    items(){ 
    const items = Items.find({}); 
    Session.set('itemArray', items); 
    return items; 
    }, 
    json(){ 
    console.log(Session.get('itemArray'); 
    }, 
    loggedIn(){ 
    return Meteor.userId(); 
    } 
}); 

Ist diese Arbeit für Sie?

+0

Dies ist sicherlich klar, wie nicht mehrere Abfragen zu machen, aber ich bin mir immer noch nicht sicher, wie Sie auf die Dokumente (Datensätze) zugreifen, die zurückgegeben werden. Vielleicht ist ein besserer Weg, um diese Frage zu gestalten, was ist der beste Weg, um eine Suche zu tun und nur die resultierenden Dokumente (Objekt) auf der Konsole ausgeben? –

2

Collection.find() in Meteor gibt eine Cursor, die eine Funktion ist, die von Blaze Vorlagen (zum Beispiel) verwendet werden kann.

Collection.find().fetch() gibt ein Array von Objekten zurück (d. H. Dokumente).

+0

OK, das macht Sinn. Weil die fetch-Funktion mit der find-Funktion in Verbindung steht, heißt das, dass ich zwei individuelle Funde machen muss, wenn ich sowohl den Blaze-cursor als auch ein stringifiziertes json-Array/-Objekt ausgeben möchte? Und sind Sessions der beste Weg, global zugängliche Variablen zu erstellen? –

+0

Sie müssen nicht zwei suchen. Sie können einfach 'const cursor = Collection.find()' und dann später 'console.log (cursor.fetch())'. Sitzungen sind großartig als globale * reaktive * Variablen (d. H. Wenn sie sich ändern, wird auch abhängiger Code ausgeführt). Sie sollten sich auch [reaktive vars] (https://docs.meteor.com/api/reactive-var.html) ansehen. –

Verwandte Themen