2016-07-28 10 views
0

Ich habe Probleme beim Drucken der Inhalte, die ich von einer Meteor Sammlung bekomme. Ich habe meine Sammlung in /ui/api/collections.jsMeteor: Iteriere über den Cursor von MongoCollection.find() und drucke ein Feld

import { Meteor } from 'meteor/meteor'; 
import { Mongo } from 'meteor/mongo'; 
import 'meteor/aldeed:collection2'; 

export const Courses = new Mongo.Collection("courses"); 

Courses.allow({ 
    'insert': function() { 
     // if (Meteor.isEducator(Meteor.userId())) { 
      return true; 
    } 
}) 

/imports/api/course.html

<template name="course"> 
    <h2> You are enrolled in the following courses:</h2> 
    <ul> 
     {{#each course_list}} 
      {{> getCourseName}} 
     {{/each}} 
    </ul> 
</template> 

<template name="getCourseName"> 
    <li><h2>{{courseName}}</h2></li> 
</template> 

/imports/api/course.js erklärt

Template.course.helpers({ 
    course_list: function() { 
     var result = Courses.find({}); 
     console.log("result is:"); 
     console.log(result); 

     return result; 
    } 
}) 

Ich habe Kurse als neue Mongo.Collection deklariert und diese in /server/main.js importiert. Danach habe ich /imports/api/collections.js in course.js und course.html importiert.

Ich bemerkte, dass es LocalCollection sagt, die mich denken lassen, dass es die tatsächliche Sammlung nicht findet. Wenn ich eine db.courses.find() auf der serverseitigen Mongo-Konsole mache, sehe ich die zwei Kurse, die in der Sammlung existieren, und beide haben ein courseName-Feld. Ich glaube nicht, dass ich veröffentlichen/abonnieren muss, da ich die Sammlung in Importen deklariere und dann die Sammlung als globale Variable exportiert habe. Ich bin neu bei Meteor und Javascript im Allgemeinen, so dass jede Erklärung sehr geschätzt wird.

Antwort

1

Keine Sorgen. Sie hatten bereits Zugriff auf die Daten. Es ist nur, dass Meteor local collections auf der Clientseite erstellt - die Kraft von Minimongo. Deshalb haben Sie LocalCollection auf der Konsole anstelle von Courses gesehen, die Sie möglicherweise erwarten.

Beachten Sie auch, dass find auf Sammlungen eine cursor zurückgibt. Man benötigt Operationen holen, forEach, Karte, etc, um die tatsächlichen Daten zu manipulieren.